Higher-order functions: Difference between revisions
Content deleted Content added
Line 1,189:
computeit2(@exp, "sin", pi/3)</lang>
=={{header|ooRexx}}==
routines are first class ooRexx objects that can be passed to other routines or methods and invoked.
<lang ooRexx>
say callit(.routines~fib, 10)
say callit(.routines~fact, 6)
say callit(.routines~square, 13)
say callit(.routines~cube, 3)
say callit(.routines~reverse, 721)
say callit(.routines~sumit, 1, 2)
say callit(.routines~sumit, 2, 4, 6, 8)
-- call the provided routine object with the provided variable number of arguments
::routine callit
use arg function
args = arg(2, 'a') -- get all arguments after the first to pass along
return function~callWith(args) -- and pass along the call
::routine cube
use arg n
return n**3
::routine square
use arg n
return n**2
::routine reverse
use arg n
return reverse(n)
::routine fact
use arg n
accum = 1
loop j = 2 to n
accum = accum * j
end
return accum
::routine sumit
use arg n
accum = 0
do i over arg(1, 'a') -- iterate over the array of args
accum += i
end
return accum
::routine fib
use arg n
if n == 0 then
return n
if n == 1 then
return n
last = 0
next = 1
loop j = 2 to n;
current = last + next
last = next
next = current
end
return current
</lang>
=={{header|Oz}}==
|