#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 f : (Number -> Number)
     (lambda ([n : Number])
       (+1 (f 0)))
    (f 10))