Function prototype: Difference between revisions

→‎{{header|SNOBOL4}}: Expanded on SNOBOL4 example.
(→‎{{header|SNOBOL4}}: Expanded on SNOBOL4 example.)
Line 887:
 
With this structure the "function" is declared at the program, the implementation is somewhere down in the middle, and the mainline (<code>test</code> here) is at the end.
 
The <code>define()</code> BIF is used for more than merely providing function-like access to a label with the same name. It is used to prototype all of these (with some default behaviour):
 
* the function name (<code>multiply</code> in the examples);
* the formal arguments to the function (<code>a, b</code> in the examples);
* the entry point label for the function's code (defaults to the function name);
* any local variables which should be protected in the function (defaults to none).
 
Thus a highly-contrived example function that illustrates all of these would look like this:
 
<lang snobol4> define('multiply(a,b)acc1,acc2','mult_impl') :(mult_end)
mult_impl acc1 = a
acc2 = b
multiply = acc1 * acc2 :(return)
mult_end
 
* Test
output = multiply(10.1,12.2)
output = multiply(10,12)
end</lang>
 
=={{header|zkl}}==