September 2017 Update
This commit is contained in:
parent
bba7bfd280
commit
ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions
39
Task/Y-combinator/SuperCollider/y-combinator.supercollider
Normal file
39
Task/Y-combinator/SuperCollider/y-combinator.supercollider
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
// z-combinator
|
||||
(
|
||||
z = { |f|
|
||||
{ |x| x.(x) }.(
|
||||
{ |y|
|
||||
f.({ |args| y.(y).(args) })
|
||||
}
|
||||
)
|
||||
};
|
||||
)
|
||||
|
||||
|
||||
// factorial
|
||||
k = { |f| { |x| if(x < 2, 1, { x * f.(x - 1) }) } };
|
||||
|
||||
g = z.(k);
|
||||
|
||||
g.(5) // 120
|
||||
|
||||
(1..10).collect(g) // [ 1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800 ]
|
||||
|
||||
|
||||
|
||||
// fibonacci
|
||||
|
||||
k = { |f| { |x| if(x <= 2, 1, { f.(x - 1) + f.(x - 2) }) } };
|
||||
|
||||
g = z.(k);
|
||||
|
||||
g.(3)
|
||||
|
||||
(1..10).collect(g) // [ 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 ]
|
||||
|
||||
// a shorter form
|
||||
|
||||
(
|
||||
r = { |x| x.(x) };
|
||||
z = { |f| r.({ |y| f.(r.(y).(_)) }) };
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue