Name: Anonymous 2012-06-16 15:57
I'm implementing Scheme dialect with OOP, default argument values and some other features. How readable is it for you?
(define (fib n (memo . #{ (0 . 1) (1 . 1) }))
(let ((memoized (: memo get n)))
(if memoized (cdr memoized)
(let ((result (+ (fib (- n 1)) (fib (- n 2)))))
(: memo set! (n . result))
result))))