Anonymous user
First-class functions/Use numbers analogously: Difference between revisions
First-class functions/Use numbers analogously (view source)
Revision as of 04:32, 14 January 2015
, 9 years ago→{{header|zkl}}: Typeos
(→{{header|zkl}}: Typeos) |
|||
Line 1,111:
=={{header|zkl}}==
<lang zkl>var x
//-->L(L(2,0.5),L(4,0.25),L(6,0.166667))</lang>
<lang zkl>fcn multiplier(n1,n2){ return('*.fp(n1,n2)) }</lang>
This is actually partial evaluation, multiplier returns n1*n2*X where X isn't known yet. So multiplier(2,3)(4) --> (2*3*)4 --> 24. Even better, multiplier(2,3)(4,5) --> 120, multiplier(2,3)(4,5,6) --> 720, multiplier(2,3)() --> 6.
Alternatively,
<lang zkl>fcn multiplier(n1,n2){ fcn(n,X){ n*X }.fp(n1*n2) }</lang>
<lang zkl>var ms
//-->L(Deferred,Deferred,Deferred) // lazy eval of n*(1/n)*X
ms.run(True,1.0) //-->L(1,1,1)
ms.run(True,5.0) //-->L(5,5,5)
ms.run(True,0.5) //-->L(0.5,0.5,0.5)</lang>
List.run(True,X), for each item in the list, does i(X) and collects the results into another list. Sort of an inverted map or fold.
{{omit From|C}}
|