Declare one
def leading, -> for the return type.
A plain function has no permission check and no audit entry — it’s not
the right tool the moment a call needs one. See
Which keyword do I want?
Inline bodies
Short bodies can skip the indented block:Closures
A function closes over the scope it was declared in:nonlocal needed:
Docstrings
A bare string as the first statement of a function’s body is captured as its.doc, same as Python:
"""...""" and "..." both work — plain "..." already tolerates an
embedded newline. The text is dedented and trimmed for you. No docstring?
.doc is nil, never an error. tool, action, and agent bodies work
the same way; see them in sense inspect’s panels.
Type checking
Checked at the call site and atreturn:
matches_type() — see Values & Types),
not full static inference.
Arity is strict
Every parameter is required, exactly once, no defaults:print, range — are variadic. User-defined
functions aren’t, yet.)
Continue
Control flow
if/else, while, for, break, continue.Actions
Looks like a function, behaves completely differently — for anything
that changes the outside world.

