UNB/ CS/ David Bremner/ teaching/ cs4613/ lectures/ lecture09/ recmac.rkt
#lang plait
(define-syntax-rule (rec V : T E B)
  (local [(V : T) (define V E)] B))

#;(let ([fact (lambda (n)
              (if (zero? n) 1 (* n (fact (- n 1)))))])
  (fact 10))

(rec fact : (Number -> Number)
     (lambda (n) (if (zero? n) 1 (* n (fact (- n 1)))))
   (fact 10))