First-class functions/Use numbers analogously: Difference between revisions
Content added Content deleted
m (→{{header|Scala}}: fix missing tag) |
(Use 'curry', compare to "First class functions") |
||
Line 386: | Line 386: | ||
=={{header|PicoLisp}}== |
=={{header|PicoLisp}}== |
||
{{incorrect|PicoLisp|Compare and contrast the resultant program with the corresponding entry in First-class functions.}} |
|||
<lang PicoLisp>(load "@lib/math.l") |
<lang PicoLisp>(load "@lib/math.l") |
||
(de multiplier (N1 N2) |
(de multiplier (N1 N2) |
||
( |
(curry (N1 N2) (X) |
||
(*/ N1 N2 X `(* 1.0 1.0)) ) ) |
|||
(let (X 2.0 Xi 0.5 Y 4.0 Yi 0.25 Z (+ X Y) Zi (*/ 1.0 1.0 Z)) |
(let (X 2.0 Xi 0.5 Y 4.0 Yi 0.25 Z (+ X Y) Zi (*/ 1.0 1.0 Z)) |
||
Line 402: | Line 402: | ||
0.500000 |
0.500000 |
||
0.500001</pre> |
0.500001</pre> |
||
This follows the same structure as [[First-class functions#PicoLisp]], just |
|||
that the function 'multiplier' above accepts two numbers, while 'compose' |
|||
below accepts two functions: |
|||
<lang PicoLisp>(load "@lib/math.l") |
|||
(de compose (F G) |
|||
(curry (F G) (X) |
|||
(F (G X)) ) ) |
|||
(de cube (X) |
|||
(pow X 3.0) ) |
|||
(de cubeRoot (X) |
|||
(pow X 0.3333333) ) |
|||
(mapc |
|||
'((Fun Inv) |
|||
(prinl (format ((compose Inv Fun) 0.5) *Scl)) ) |
|||
'(sin cos cube) |
|||
'(asin acos cubeRoot) )</lang> |
|||
With a similar output: |
|||
<pre>0.500001 |
|||
0.499999 |
|||
0.500000</pre> |
|||
=={{header|Python}}== |
=={{header|Python}}== |