Thanks for all the input guys. It all makes sense.
I have a question on the cond/case option though. More one for StackOverflow really but...
(define (make-f)
(lambda (message . arguments)
(case message
(('get!) (display "get"))
(('size) (display "size"))
(else (display "no match")))))
(define f (make-f))
(f 'size)
> "no match"
(define (make-g)
(lambda (message . arguments)
(display message) (newline)
(cond
((eq? message 'get!) (display "get"))
((eq? message 'size) (display "size"))
(else (display "no match")))))
(define g (make-g))
(g 'size)
> "size"
How do I get the make-f variant using case to do what I want? I guess this is a eqv? vs eq? thing, or am I missing a quote somewhere?
Roger.