Hello everyone, Since I've discovered the concept of metaprogramming I've been quite interested in Racket and its syntax extension capabilities.
While searching for a memoization syntax extension I found a macro whose pattern extension remained unclear. (define-syntax define/memoized (syntax-rules () ((_ (name . args) . body) (define name (memoize (lambda args . body)))))) With the memoization function being defined as such: (define (memoize f) (local ([define table (make-hash)]) (lambda args (dict-ref! table args (lambda () (apply f args)))))) What does the '.' mean in '(name . args)' and '. body'? In a call like (define/memoized (foo x y z) (displayln "bar"))) I would imagine that name would be matched to foo; (x y z) to args and body to (display ln "bar") but why do we use the '. body' in the lambda expression at the end? Thank you for your attention. -- 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 racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.