function average(atom a, atom b) return (a+b)/2 end functionAny phix object can be returned. You can return multiple values, by returning a sequence of objects. e.g.
return {x_pos, y_pos}See also: Multiple Assignment
The general term "subroutine", or simply "routine" is used when a remark is applicable to both procedures and functions.
Nested routines are not currently permitted, but some groundwork has been started, see demo\rosetta\Nested_function.exw