Call a function: Difference between revisions
Content added Content deleted
m (→{{header|Ada}}: Linguistic fixes) |
m (Added the Sidef language) |
||
Line 2,625: | Line 2,625: | ||
* Call-by-name parameters use a function in first-class context. The function [http://seed7.sourceforge.net/examples/map.htm doMap] from the examples section of the Seed7 homepage uses a given expression to modify the elements of an array:<lang seed7>seq := doMap([](1, 2, 4, 6, 10, 12, 16), x, succ(x));</lang> |
* Call-by-name parameters use a function in first-class context. The function [http://seed7.sourceforge.net/examples/map.htm doMap] from the examples section of the Seed7 homepage uses a given expression to modify the elements of an array:<lang seed7>seq := doMap([](1, 2, 4, 6, 10, 12, 16), x, succ(x));</lang> |
||
=={{header|Sidef}}== |
|||
All functions in Sidef are first-class closures |
|||
<lang ruby>foo(); # without arguments |
|||
foo(1, 2); # with two arguments |
|||
foo(args...); # with a variable number of arguments |
|||
foo(name: 'Bar', age: 42); # with named arguments |
|||
var f = foo; # store the function foo inside 'f' |
|||
var result = f(); # obtain the return value of a function |
|||
var arr = [1,2,3]; |
|||
foo(arr); # the arguments are passed by object-reference</lang> |
|||
Partial application is possible by using a curry function: |
|||
<lang ruby>func curry(f, *args1) { |
|||
func (*args2) { |
|||
f(args1..., args2...); |
|||
} |
|||
} |
|||
func add(a, b) { |
|||
a + b |
|||
} |
|||
var adder = curry(add, 1); |
|||
say adder(3); #=>4</lang> |
|||
=={{header|Smalltalk}}== |
=={{header|Smalltalk}}== |