Builtin Reference — Overview

Jetro ships 181 builtin methods. They fall into 18 categories. Every method has the same shape:

.method(arg1, arg2, …)

…or, when the parser routes through inline path filters and sugar:

$.path.method(...)

This part documents every method. Each entry follows the format:

name (aliases: …)

  • Signature: what it takes and returns
  • Behavior: one-paragraph description
  • Example: at least one minimal runnable example
  • Demand law / Notes: when relevant

Index

CategoryWhat goes herePage
Value introspectiontype, len, schema, JSON round-tripIntrospection
Numeric scalarsceil, floor, round, absNumeric
String transformsupper, trim, pad_*, slice, replaceString
String search / regexstarts_with, match_*, captures, split_reString Search
Conversionto_number, parse_int, parse_boolConversion
Streaming one-to-onemap, enumerate, pairwise, lag, zscoreStreaming
Filteringfilter, find, compact, takewhileFiltering
Expandingflat_map, flatten, lines, charsExpanding
Reducerssum, count, any, max_byReducers
Positionalfirst, last, nth, collectPositional
Barrierssort, unique, group_by, windowBarrier
Arrays / setsappend, diff, union, zipArrays
Objectskeys, pick, merge, transform_valuesObjects
Path mutationget_path, set_path, set, updatePath Mutation
Deep traversaldeep_find, walk, recDeep
Predicateshas, missing, includes, indexPredicates
Tabularto_csv, to_tsvTabular
Relationalequi_joinRelational

Notation in this part

  • aliases — alternative names accepted by the parser. They lower to the same builtin and behave identically.
  • "demand law" — what kind of Demand this builtin propagates upstream. See Demand Propagation for the model.
  • "barrier" / "stream" / "scalar" — execution shape (does it buffer, stream, or run once on a single value).

When a method appears under multiple categories (e.g. .find is both a filter and positional), it lives in the most specific chapter and is cross-linked.

Sharp edges

A small set of v0.5 design choices is documented in Known Limitations: replace is single-occurrence (use replace_all for substitute-every), there is no in operator (use xs has v), and rec(fn) caps at 10 000 iterations when the step never converges (use rec(fn, cond) to bound). Two engine items remain on the fix-list: rec() no-arg and a stronger runaway-iteration guard.

Aliases at a glance

CanonicalAliases
anyexists
chunkbatch
drop_whiledropwhile
take_whiletakewhile
includescontains
skipdrop
sortsort_by
uniquedistinct
deep_find..find (deep-method form)
deep_shape..shape
deep_like..like

These pairs are interchangeable. Pick whichever reads better.