Call a function
All functions in Sidef are first-class closures
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 in variable '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
Partial application is possible by using a curry function:
func curry(f, *args1) {
func (*args2) {
f(args1..., args2...)
}
}
func add(a, b) {
a + b
}
var adder = curry(add, 1)
say adder(3) #=>4