Call a function: Difference between revisions

Content added Content deleted
(Added Maple implementation.)
(Add Nimrod)
Line 1,014: Line 1,014:
def a = g(3) // equivalent to: def a = f(2, 3)
def a = g(3) // equivalent to: def a = f(2, 3)
def b = h(3) // equivalent to: def b = f(3, 2)</lang>
def b = h(3) // equivalent to: def b = f(3, 2)</lang>

=={{header|Nimrod}}==
Translated from Python, when possible:
<lang nimrod>proc no_args() =
discard
# call
no_args()

proc fixed_args(x, y) =
echo x
echo y
# calls
fixed_args(1, 2) # x=1, y=2
fixed_args 1, 2 # same call
1.fixed_args(2) # same call


proc opt_args(x=1.0) =
echo x
# calls
opt_args() # 1
opt_args(3.141) # 3.141

proc var_args(v: varargs[string, `$`]) =
for x in v: echo x
# calls
var_args(1, 2, 3) # (1, 2, 3)
var_args(1, (2,3)) # (1, (2, 3))
var_args() # ()

## Named arguments
fixed_args(y=2, x=1) # x=1, y=2

## As a statement
if true:
no_args()

proc return_something(x): int =
x + 1

var a = return_something(2)

## First-class within an expression
let x = return_something(19) + 10
let y = 19.return_something() + 10
let z = 19.return_something + 10</lang>


=={{header|OCaml}}==
=={{header|OCaml}}==