September 2017 Update
This commit is contained in:
parent
bba7bfd280
commit
ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions
|
|
@ -1,21 +1,31 @@
|
|||
# A function without arguments: #
|
||||
f();
|
||||
# or #
|
||||
# Note functions and subroutines are called procedures (or PROCs) in Algol 68 #
|
||||
# A function called without arguments: #
|
||||
f;
|
||||
|
||||
# Algol 68 does not expect an empty parameter list for calls with no arguments, "f()" is a syntax error #
|
||||
# A function with a fixed number of arguments: #
|
||||
f(1, x);
|
||||
|
||||
# ALGOL 68 does not support optional arguments, variable numbers of arguments, or named
|
||||
arguments.
|
||||
However, some functions may take an argument "0" as an instruction to use the default value
|
||||
(sort of a pseudo-optional argument). #
|
||||
# variable number of arguments: #
|
||||
# functions that accept an array as a parameter can effectively provide variable numbers of arguments #
|
||||
# a "literal array" (called a row-display in Algol 68) can be passed, as is often the case for the I/O #
|
||||
# functions - e.g.: #
|
||||
print( ( "the result is: ", r, " after ", n, " iterations", newline ) );
|
||||
# the outer brackets indicate the parameters of print, the inner brackets indicates the contents are a "literal array" #
|
||||
|
||||
# ALGOL 68 does not support optional arguments, though in some cases an empty array could be passed to a function #
|
||||
# expecting an array, e.g.: #
|
||||
f( () );
|
||||
|
||||
# named arguments - see the Algol 68 sample in: http://rosettacode.org/wiki/Named_parameters #
|
||||
|
||||
# In "Talk:Call a function" a statement context is explained as
|
||||
"The function is used as an instruction (with a void context),
|
||||
rather than used within an expression." Based on that,
|
||||
both ALGOL examples above are already in a statement context.
|
||||
For full ALGOL compatibility, though, they should be in the form "VOID (f ());" #
|
||||
rather than used within an expression."
|
||||
Based on that, the examples above are already in a statement context.
|
||||
Technically, when a function that returns other than VOID (i.e. is not a subroutine)
|
||||
is called in a statement context, the result of the call is "voided" i.e. discarded.
|
||||
If desired, this can be made explicit using a cast, e.g.: #
|
||||
VOID(f);
|
||||
|
||||
# A function's return value being used: #
|
||||
x := f(y);
|
||||
|
|
@ -26,3 +36,4 @@ x := f(y);
|
|||
|
||||
# If the function is declared with argument(s) of mode REF MODE,
|
||||
then those arguments are being passed by reference. #
|
||||
# Technically, all parameters are passed by value, however the value of a REF MODE is a reference... #
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue