Higher-order functions: Difference between revisions
Content added Content deleted
No edit summary |
(→{{header|REXX}}: added the REXX language. -- ~~~~) |
||
Line 1,469: | Line 1,469: | ||
31 [ ( n-n ) 100 * ] disp |
31 [ ( n-n ) 100 * ] disp |
||
</lang> |
</lang> |
||
=={{header|REXX}}== |
|||
<lang rexx> |
|||
/*pass a function as a name to a function. */ |
|||
n=3735928559 |
|||
funcName='fib' ; q= 10; call someFunction funcName,q; call tell |
|||
funcName='fact' ; q= 6; call someFunction funcName,q; call tell |
|||
funcName='square' ; q= 13; call someFunction funcName,q; call tell |
|||
funcName='cube' ; q= 3; call someFunction funcName,q; call tell |
|||
funcName='reverse'; q=721; call someFunction funcName,q; call tell |
|||
say '~~~~~~~~~' |
|||
say 'done as' d2x(n)"." /*prove that var N still intact.*/ |
|||
exit |
|||
/*──────────────────────────────────────where the rubber meets the road.*/ |
|||
someFunction: procedure; arg whatwhat,n; signal value (whatwhat) |
|||
say result 'result' |
|||
return |
|||
/*──────────────────────────────────────functions that are on the road. */ |
|||
cube: return n**3 |
|||
square: return n**2 |
|||
reverse: return 'REVERSE'(n) |
|||
fact: !=1; do j=2 to n; !=!*j; end; return ! |
|||
tell: say right(funcName'('q") = ",20)result; return |
|||
fib: if n==0 then return n; if n==1 then return n;_=0; a=0; b=1 |
|||
do j=2 to n; _=a+b; a=b; b=_; end; return _ |
|||
</lang> |
|||
Output: |
|||
<pre style="height:25ex;overflow:scroll"> |
|||
fib(10) = 55 |
|||
fact(6) = 720 |
|||
square(13) = 169 |
|||
cube(3) = 27 |
|||
reverse(721) = 127 |
|||
~~~~~~~~~ |
|||
done as DEADBEEF. |
|||
</pre> |
|||
=={{header|Ruby}}== |
=={{header|Ruby}}== |