- name
- x-validate
- description
- validates nested or piped function calls to determine if output types match all required input types
- input
- piped function calls
- options
- log = true
- output
- boolean
for each nested or piped function pair {
check that the output type matches the required input types of the next
}
if options.log then {
log results to chat
}
return true if they all validate or false if they don't
# Log
If `options.log`, print the pipeline **in source order**: initial value, then each `/skill` **exactly as many times as it appears** in the expression. **Never** add or omit a `/skill` that is not in the source.
**Between steps:** After a literal or `/skill`, before the next `/skill`, print **one** indented line:
- **OK** — the type leaving the producer toward the next step.
- **Fail** — only `<output> != <input>` (what the producer emitted vs what the next step requires). **No** separate line for the output type alone; the mismatch line is the whole message between that pair.
Put that line **after** the producer (literal or `/skill`) and **before** the consumer’s `/skill`. Never put the failure summary under the consumer.
After the first rejection, list remaining `/skill` lines from the source; each gets `—` as its only indented line (unreachable).
## Examples
2 | /x-double |> /x-double |> /x-log
2
number
/x-double
number
/x-double
number
/x-log
"foo" | /x-double |> /x-double |> /x-log
"foo"
string != number
/x-double
—
/x-double
—
/x-log
—
12 | /x-double |> /x-alpha |> /x-double |> /x-log
12
number
/x-double
number
/x-alpha
string != number
/x-double
—
/x-log
—
Ver en GitHub