Everything is a value¶
Every Dylan statement or expression returns a value. Functions and control
constructs like select
and for
return the values of the last
expression in their body.
if
returns a value so it may be used in return position:
let abs = if (x >= 0) x else -x end;
Dylan functions return the values of the last expression in their body to be evaluated. This function returns either “foo” or “bar”:
define function foobar ()
if (odd?(random(100)))
"foo"
else
"bar"
end
end;
If there is no return value declaration for a function then any number of
values of any type can be returned. Use => (...decls...)
to declare return
values. This function returns no values:
define function foo () => ()
format-out("foo");
end;
This function returns an integer and a string:
define function bar () => (size :: <integer>, description :: <string>)
values(42, "the meaning of everything")
end;