octopus-0.0.2.1: examples/y.oct
open (#<import> "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]