33 lines
1.2 KiB
Plaintext
33 lines
1.2 KiB
Plaintext
# 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
|