; http://stackoverflow.com/questions/23167464/scheme-self-reference-lambda-macro
; because this is as cool as things get
(define-syntax slambda
  (lambda (x)
    (syntax-case x ()
      ((slambda formals body0 body1 ...)
        (with-syntax 
                    ((self (datum->syntax #'slambda 'self)))
                    #'(letrec ((self (lambda formals body0 body1 ...)))
                       self))))))



( 
  (slambda (x) (+ x 1))
  10)

((slambda () self))