<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Op 19-4-2012 22:08, namekuseijin schreef:
    <blockquote
cite="mid:CAK-u0g7nG2UxXNgZ8LOyAenLaSLPprzA8OUyGkCCh1=bTbpDdw@mail.gmail.com"
      type="cite">On Thu, Apr 19, 2012 at 11:04 AM, Roelof Wobben &lt;<a
        moz-do-not-send="true" href="mailto:r.wobben@home.nl">r.wobben@home.nl</a>&gt;
      wrote:<br>
      &gt; (define (edit e k)<br>
      &gt; &nbsp;(cond<br>
      &gt; &nbsp; &nbsp; [ &nbsp;(and(key=? "right" k) (&gt; (string-length
      (editor-post e)) 0))<br>
      &gt; (make-editor(string-append (editor-pre e) (string-first
      (editor-post e) ))<br>
      &gt; (string-rest (editor-post e) ))]<br>
      &gt; &nbsp; &nbsp; [ &nbsp;(and(key=? "left" k) (&gt; (string-length (editor-pre
      e)) 0))<br>
      &gt; (make-editor ( string-remove-last (editor-pre e) )
      (string-append<br>
      &gt; (string-last(editor-pre e)) &nbsp;(editor-post e)))]<br>
      &gt; &nbsp; &nbsp; [ &nbsp;(and (key=? "\b" k) (&gt; (string-length (editor-pre
      e)) 0))<br>
      &gt; (make-editor (string-remove-last (editor-pre e)) (editor-post
      e))]<br>
      &gt; &nbsp; &nbsp; [ &nbsp;(and &nbsp;(key=? "\b" k) (equal? (string-length
      &nbsp;(editor-pre e)) 0)) e]<br>
      &gt; &nbsp; &nbsp; [ &nbsp;( or (key=? "\t" k) (key=? "\u007F" k)) e]<br>
      &gt; &nbsp; &nbsp; [ &nbsp;( &gt; (string-length k) 1) e ]<br>
      &gt; &nbsp; &nbsp; [else (make-editor (string-append (editor-pre e) k)
      (editor-post e))]<br>
      &gt; &nbsp; &nbsp; ))<br>
      <br>
      I'd rewrite that as:<br>
      <br>
      <font class="Apple-style-span" face="'courier new', monospace">(define
        (edit e k)<br>
        &nbsp;(let ([pre (editor-pre e)]<br>
        &nbsp; &nbsp; &nbsp; &nbsp;[post (editor-post e)]<br>
        &nbsp; &nbsp; &nbsp; &nbsp;[size string-length]<br>
        &nbsp; &nbsp; &nbsp; &nbsp;[s+ &nbsp; string-append])<br>
        &nbsp; &nbsp;(cond<br>
        &nbsp; &nbsp; &nbsp;[(and (key=? "right" k) (&gt; (size post) 0)) (make-editor
        (s+ pre (string-first post)) (string-rest post))]<br>
        &nbsp; &nbsp; &nbsp;[(and (key=? "left" k) &nbsp;(&gt; (size pre) &nbsp;0)) (make-editor
        (string-remove-last pre) (s+ (string-last pre) &nbsp;post))]<br>
        &nbsp; &nbsp; &nbsp;[(and (key=? "\b" k) &nbsp; &nbsp;(&gt; (size pre) &nbsp;0)) (make-editor
        (string-remove-last pre) post)]<br>
        &nbsp; &nbsp; &nbsp;[(and (key=? "\b" k) &nbsp; &nbsp;(= (size pre) &nbsp;0)) e]<br>
        &nbsp; &nbsp; &nbsp;[(or &nbsp;(key=? "\t" k) (key=? "\u007F" k)) &nbsp; e]<br>
        &nbsp; &nbsp; &nbsp;[(&gt; (size k) 1) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;e]<br>
        &nbsp; &nbsp; &nbsp;[else &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(make-editor (s+
        pre k) post)])))<br>
      </font>
      <div><br>
      </div>
    </blockquote>
    <br>
    <br>
    Thanks, <br>
    <br>
    I see how it works but the htdp2e book let is in a later chapter
    then I study now.<br>
    <br>
    Roelof<br>
    <br>
  </body>
</html>