Task

Demonstrate the different syntax and semantics provided for calling a function.



This may include:

   Calling a function that requires no arguments
   Calling a function with a fixed number of arguments
   Calling a function with optional arguments
   Calling a function with a variable number of arguments
   Calling a function with named arguments
   Using a function in statement context
   Using a function in first-class context within an expression
   Obtaining the return value of a function
   Distinguishing built-in functions and user-defined functions
   Distinguishing subroutines and functions
   Stating whether arguments are passed by value or by reference
   Is partial application possible and how


This task is not about defining functions.




printHello: $[][
	print "Hello World!"
]
 
sayHello: $[name][
	print ["Hello" name "!"]
]
 
printAll: $[args][
	loop args [arg][
		print arg
	]
]
 
getNumber: $[][3]
 
; Calling a function that requires no arguments
printHello
 
; Calling a function with a fixed number of arguments
sayHello "John"
 
; Calling a function with a variable number of arguments
printAll ["one" "two" "three"]
 
; Using a function in statement context
if true [printHello]
print getNumber
 
; Using a function in first-class context within an expression
if getNumber=3 [print "yep, it worked"]
 
; Obtaining the return value of a function:
num: getNumber
 
print num
 