# say [Built-ins](README.md) Canonical ID: `core.print`. Nederlands: `zeg`. Writes values in their argument order, separated by one space, then writes one newline. It accepts any Pliro value and returns None. Use several arguments for mixed text and numbers; no explicit conversion is needed. Calling it does not wait for input or begin a new cooperative execution slice. ## Signature ```text say(value, ...) ``` ## Arguments | Parameter | Type | Requirement | |---|---|---| | `value, ...` | Any | One or more values; no maximum arity in the language. | ## Return value `None`. ## Example ```pliro # language: en let score = 12 say "Pliro", score, true say([1, 2], {"score": score}) ``` Console output: `Pliro 12 true`, followed by a second line containing the list and map. The value returned by each call is None. ## Notes and common mistakes Use the function name for your source language. Its [canonical ID](../concepts/canonical-identity.md) is a shared documentation label; you do not type that ID as a call. Giving your own variable or function the same name can hide the built-in. Supply the documented [arguments](../concepts/parameters-and-arguments.md) and value types. Pliro reports mismatches when checking can detect them, or when the call runs. ## Related entries [length](length.md) · [text](text.md) · [Programming guides](../guides/getting-started.md) · [Host support](../guides/hosts.md) · [Calls and arguments](../syntax/calls.md)