packages feed

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]