#lang plai (require "trcfae-t.rkt") (define fib-type (arrowTE (numTE) (numTE))) (define fib-lambda (fun 'n (numTE) (if0 (id 'n) (num 1) (if0 (sub (id 'n) (num 1)) (num 1) (add (app (id 'fib) (sub (id 'n) (num 1))) (app (id 'fib) (sub (id 'n) (num 2)))))))) (define fib-ex (rec 'fib fib-type fib-lambda (app (id 'fib) (num 5)))) (test (typecheck fib-ex (mtEnv)) (numT)) %