39 lines
1.8 KiB
Plaintext
39 lines
1.8 KiB
Plaintext
% Note, in Algol W, functions are called procedures %
|
|
% calling a function with no parameters: %
|
|
f;
|
|
|
|
% calling a function with a fixed number of parameters %
|
|
g( 1, 2.3, "4" );
|
|
|
|
% Algol W does not support optional parameters in general, however constructors for records can %
|
|
% be called wither with parameters (one for each field in the record) or no parameters #
|
|
|
|
% Algol W does not support variable numbers of parameters, except for the built-in I/O functions #
|
|
% Algol W does not support named arguments %
|
|
|
|
% A function can be used in a statement context by calling it, as in the examples above %
|
|
|
|
% First class context: A function can be passed as a parameter to another procedure, e.g.: %
|
|
v := integrate( sin, 0, 1 )
|
|
% assuming a suitable definition of integrate %
|
|
% Algol W does not support functions returning functions %
|
|
|
|
% obtaining the return value of a function: e.g.: %
|
|
v := g( x, y, z );
|
|
|
|
% There is no syntactic distinction between user-defined and built-in functions %
|
|
|
|
% Subroutines and functions are both procedures, a subroutine is a procedure with no return type %
|
|
% (called a proper procedure in Algol W) %
|
|
% There is no syntactic distinction between a call to a function and a call to a subroutine %
|
|
% other than the context %
|
|
|
|
% In Algol W, parameters are passed by value, result or value result. This must be stated in the %
|
|
% definition of the function/subroutine. Value parameters are passed by value, result and value result %
|
|
% are effectively passed by reference and assigned on function exit. Result parameters are "out" parameters %
|
|
% and value result parameters are "in out". %
|
|
% Algol W also has "name" parameters (not to be confused with named parameters). Functions with name %
|
|
% parameters are somewhat like macros %
|
|
|
|
% Partial application is not possible in Algol W %
|