Op 19-4-2012 22:08, namekuseijin schreef:
On Thu, Apr 19, 2012 at 11:04 AM, Roelof Wobben <r.wob...@home.nl <mailto:r.wob...@home.nl>> wrote:
> (define (edit e k)
>  (cond
>     [  (and(key=? "right" k) (> (string-length (editor-post e)) 0))
> (make-editor(string-append (editor-pre e) (string-first (editor-post e) ))
> (string-rest (editor-post e) ))]
>     [  (and(key=? "left" k) (> (string-length (editor-pre e)) 0))
> (make-editor ( string-remove-last (editor-pre e) ) (string-append
> (string-last(editor-pre e))  (editor-post e)))]
>     [  (and (key=? "\b" k) (> (string-length (editor-pre e)) 0))
> (make-editor (string-remove-last (editor-pre e)) (editor-post e))]
> [ (and (key=? "\b" k) (equal? (string-length (editor-pre e)) 0)) e]
>     [  ( or (key=? "\t" k) (key=? "\u007F" k)) e]
>     [  ( > (string-length k) 1) e ]
> [else (make-editor (string-append (editor-pre e) k) (editor-post e))]
>     ))

I'd rewrite that as:

(define (edit e k)
 (let ([pre (editor-pre e)]
       [post (editor-post e)]
       [size string-length]
       [s+   string-append])
   (cond
[(and (key=? "right" k) (> (size post) 0)) (make-editor (s+ pre (string-first post)) (string-rest post))] [(and (key=? "left" k) (> (size pre) 0)) (make-editor (string-remove-last pre) (s+ (string-last pre) post))] [(and (key=? "\b" k) (> (size pre) 0)) (make-editor (string-remove-last pre) post)]
     [(and (key=? "\b" k)    (= (size pre)  0)) e]
     [(or  (key=? "\t" k) (key=? "\u007F" k))   e]
     [(> (size k) 1)                            e]
[else (make-editor (s+ pre k) post)])))



Thanks,

I see how it works but the htdp2e book let is in a later chapter then I study now.

Roelof

____________________
  Racket Users list:
  http://lists.racket-lang.org/users

Reply via email to