open (# "basis.oct") #Curry's doesn't work, apparently; use Turing's. curry-fixpoint: (λ f (let maker ((λ x (f (x x)) (maker maker))))) #Turing's does, but I can't say I understand it turing-fixpoint: ( (λ x (λ y (y (λ z (x x y z))))) (λ x (λ y (y (λ z (x x y z))))) ) #This looks like an η-expanded version of Curry's applicative-fixpoint: (λ f (let maker (λ x (f (λ arg (x x arg)))) (maker maker))) # facRel: (λ self (λ n (ifz_then_else_ n 1 # (_*_ n (self (-- n)))) # )) # facRel: (λ facRel (λ n (ifz_then_else_ n 1 # (_*_ n (facRel (-- n)))) # )) # fac: (Y facRel) hand_fac: (Y (λ hand_fac (λ n (ifz_then_else_ n 1 (_*_ n (hand_fac (-- n))))) )) letrec fac: (λ n (ifz_then_else_ n 1 (_*_ n (fac (-- n))))) #main: (if_then_else_ 1 "a" "b") main: [fac 1, hand_fac 2, fac 3, hand_fac 4, fac 5, hand_fac 6]