RosettaCodeData/Task/Y-combinator/Smalltalk/y-combinator-1.st

10 lines
313 B
Smalltalk
Raw Permalink Normal View History

2013-04-11 01:07:29 -07:00
Y := [:f| [:x| x value: x] value: [:g| f value: [:x| (g value: g) value: x] ] ].
fib := Y value: [:f| [:i| i <= 1 ifTrue: [i] ifFalse: [(f value: i-1) + (f value: i-2)] ] ].
(fib value: 10) displayNl.
fact := Y value: [:f| [:i| i = 0 ifTrue: [1] ifFalse: [(f value: i-1) * i] ] ].
(fact value: 10) displayNl.