Call a function: Difference between revisions

+ forth
(add swift)
(+ forth)
Line 364:
% Partial application is possible (a function returns a function that has one argument bound)
</lang>
 
=={{header|Forth}}==
<lang forth>a-function \ requiring no arguments
a-function \ with a fixed number of arguents
a-function \ having optional arguments
a-function \ having a variable number of arguments
a-function \ having such named arguments as we have in Forth
' a-function var ! \ using a function in a first-class context (here: storing it in a variable)
a-function \ in which we obtain a function's return value
 
\ forth lacks 'statement contenxt'
\ forth doesn't distinguish between built-in and user-defined functions
\ forth doesn't distinguish between functions and subroutines
\ forth doesn't care about by-value or by-reference
 
\ partial application is achieved by creating functions and manipulating stacks
: curried 0 a-function ;
: only-want-third-argument 1 2 rot a-function ;
 
\ Realistic example:
: move ( delta-x delta-y -- )
y +! x +! ;
 
: down ( n -- ) 0 swap move ;
: up ( n -- ) negate down ;
: right ( n -- ) 0 move ;
: left ( n -- ) negate right ;</lang>
 
=={{header|Go}}==
Anonymous user