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.




F no_args() {}
// call
no_args()
 
F fixed_args(x, y)
   print(‘x=#., y=#.’.format(x, y))
// call
fixed_args(1, 2) // x=1, y=2
 
// named arguments
fixed_args(x' 1, y' 2)
 
F opt_args(x = 1)
   print(x)
// calls
opt_args()      // 1
opt_args(3.141) // 3.141