Skip to content
Permalink
54d7571f16
Switch branches/tags
Go to file
 
 
Cannot retrieve contributors at this time
20 lines (14 sloc) 440 Bytes
(def (: id (-> $a $a)) (λ x x))
(type (Mu $a $b) (Roll (-> (Mu $a $b) (-> $a $b))))
(def (: unroll (-> (Mu $a $b) (-> (Mu $a $b) (-> $a $b))))
(elim-Mu id))
(def (: fix (-> (-> (-> $a $b) (-> $a $b))
(-> $a $b)))
(λ f (let ((g (λ r (f (λ v (unroll r r v))))))
(g (Roll g)))))
(def (: fac (-> Float Float))
(fix (λ (f n)
(if~ n 0
1
(* n (f (- n 1)))))))
(fac 5)