#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))