Hello list,
I've been working through The Seasoned Schemer and have come across code that I
can't access in the Racket REPL: specifically, the version of rember1* shown on
p. 139 of the 17th chapter.
I'm not sure why there is a complaint about the 'oh' variable being unbound in
the last let form.
Any suggestions/explanations would be most welcome.
Geiser error message.
racket@> ,enter
"/Users/ian/src/Scheme/books/the_seasoned_schemer/017_we_change_therefore_we_are.rkt"
017_we_change_therefore_we_are.rkt:226:28: oh: unbound identifier in module
in: oh
context...:
/Applications/Racket v6.6/collects/racket/private/more-scheme.rkt:261:28
standard-module-name-resolver
/Users/ian/.emacs.d/geiser/scheme/racket/geiser/user.rkt:54:0: enter!
/Applications/Racket v6.6/collects/racket/private/misc.rkt:88:7
Dr. Racket message.
oh: unbound identifier in module in: oh
Below is the code.
;;rember1*
(define rember1*
(lambda (l a)
(letrec ([R (lambda (l oh)
(cond
[(null? l)
(oh (quote no))]
[(atom? (car l))
(if (eq? (car l)
a)
(cdr l)
(cons (car l)
(R (cdr l)
oh)))]
[else
(let ([new-car (call/cc oh
(R (car l)
oh))])
(if (atom? new-car)
(cons (car l)
(R (cdr l)
oh))
(cons new-car
(cdr l))))]))])
(let ([new-l (call/cc oh
(R l
oh))])
(if (atom? new-l)
l
new-l)))))
--
You received this message because you are subscribed to the Google Groups
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.