<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <br>
    <br>
    -------- Originele bericht --------
    <table class="moz-email-headers-table" border="0" cellpadding="0"
      cellspacing="0">
      <tbody>
        <tr>
          <th align="RIGHT" nowrap="nowrap" valign="BASELINE">Onderwerp:
          </th>
          <td>Re: [racket] Is this a good design</td>
        </tr>
        <tr>
          <th align="RIGHT" nowrap="nowrap" valign="BASELINE">Datum: </th>
          <td>Thu, 01 Mar 2012 10:05:25 +0100</td>
        </tr>
        <tr>
          <th align="RIGHT" nowrap="nowrap" valign="BASELINE">Van: </th>
          <td>Roelof Wobben <a class="moz-txt-link-rfc2396E" href="mailto:r.wobben@home.nl">&lt;r.wobben@home.nl&gt;</a></td>
        </tr>
        <tr>
          <th align="RIGHT" nowrap="nowrap" valign="BASELINE">Aan: </th>
          <td>David Van Horn <a class="moz-txt-link-rfc2396E" href="mailto:dvanhorn@ccs.neu.edu">&lt;dvanhorn@ccs.neu.edu&gt;</a></td>
        </tr>
      </tbody>
    </table>
    <br>
    <br>
    <pre>You can imagine alternative statements of the program contract and
&gt;&gt;&gt;&gt;&gt; purpose that would lead to different code. One is to drop the
&gt;&gt;&gt;&gt;&gt; non-empty assumption and state the error case:
&gt;&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt;&gt; ;; String -&gt; String
&gt;&gt;&gt;&gt;&gt; ;; Get first character of string if there is one, error otherwise
&gt;&gt;&gt;&gt;&gt;
&gt;&gt;&gt;&gt;&gt; Then you'd want to specify the error behavior in examples (and write
&gt;&gt;&gt;&gt;&gt; tests that tested this behavior) and make sure your code changed to
&gt;&gt;&gt;&gt;&gt; reflect the revised class of data it consumes.
&gt;&gt;&gt;&gt;&gt;

Oke,
Because the contract says the input always be a string so I only have to 
check on empty strings because then there is no first character.  So the 
function will be :
;; String -&gt; String
;; Print a error message when the input is wrong.
(define (print-foutmelding s)
  (string-append "Error:" s " on the function first-string"))

;; String -&gt; String
;; Get first character of string (s) if there is one, error otherwise
;; given "aaa" expected "a"
;; given "" expected " Error: Empty string  found on the function first 
string"
(define (first-string s)
  (if (&gt; (string-length s) 0) (string-ith s 0) (print-foutmelding 
"Empty string found")))


Yet another is:
&gt;&gt;&gt;&gt;&gt; ;; Any -&gt; String
&gt;&gt;&gt;&gt;&gt; ;; Get first character if given a non-empty string, error otherwise
&gt;&gt;&gt;&gt;&gt;

Because the input can be anything and only on strings the first 
character can be found I have to do two checks.
On is the input a string and second is it a non-empty string.
So the function will look like this :

;;String -&gt; String
;; Put the error message on screen because it's a empty string.
;; given "Empty string" expect ""Error:Empty string found on the 
function first-string"
;; given "No String found" expect ""Error:No string found on the 
function first-string"
(define (print-foutmelding s)
  (string-append "Error:" s " on the function first-string"))

;; Any  -&gt; String
;; Get first character of string (s) if there is one, error otherwise
;; given "aaa" expected "a"
;; given "" expected " Error: Empty string  on the function first-string"
;; given "2" expected "Error : No string found on the function first-string
(define (first-string s)
  (if (string? s) (if (&gt; (string-length s) 0) (string-ith s 0) 
(print-foutmelding "Empty string found"))(print-foutmelding "No string 
found") ))


Roelof


</pre>
  </body>
</html>