# all functions used are from the standard library # calling a function with no arguments: random-int # calling a function with a fixed number of arguments: + 1 2 # calling a function with optional arguments: # optional arguments are not really possible as such # generally differently named functions are used: sort [ 3 2 1 ] sort-by @len [ "Hello" "World" "Bob" ] # calling a function with a variable number of arguments: # generally with a special terminator value, which one depends # on the function called concat( 1 2 3 ) [ 1 2 3 ] set{ :foo :bar :spam } # calling a function with named arguments: not possible # using a function in first-class context within an expression $ @-- @len # $ is "compose", so the function returned is "one less than the length" # obtaining the return value of a function # return values are always pushed on the stack, so you don't need anything special random-int # discarding the return value of a function drop random-int # method call: local :do { :nuthin @pass } do!nuthin !import!fooModule # same as eva!import :fooModule # arguments are passed by object-identity, like in Python and Lua # partial application is not possible, due to the fact that # a function's arity is a property of its behavior and not # of its definition