A spreadsheet that knows what it's saying.
Cells carry meaning, not just numbers. A formula is a function. An array spills. A pipeline is a pipeline. The result is a model that reads cleanly to humans and runs cleanly on machines.
A type tag is a contract.
F2 as percentage is more than a format. It promises every downstream consumer — a chart, a function, an external API — that this value is a percentage. No string parsing, no convention drift, no glue code.
Tag a cell once; the entire dependency graph honors it. Mismatches surface at compile time as type_error, with the call site, not a stack trace from production.
One formula. A rectangle of values.
When a formula returns an array, the runtime spills it into a region anchored at the cell. H1# refers to the whole spill — one node in the dependency graph, not a thousand cells with copy-pasted formulas.
Operate on a spilled region directly: SUM(H1#) totals the rectangle. H1# * 1.1 broadcasts a multiplier across every cell.
Read it the way you'd describe it.
The >> operator chains transformations. Score becomes ranking becomes recommendation, in the order a person would explain it.
# 04 / candidates → ranked list ranked = candidates >> MAP(_, score_one) >> SORT(_, -1) >> TAKE(10) # 05 / ranking → recommendation recommend = score >= 0.85 THEN "advance" ELSE score >= 0.70 THEN "hold" ELSE "archive"
01 Score
ScoreCandidateScoreMaya88%Wei81%Aisha75%Theo68%A weighted average per row, tagged as percentage.
02 Rank
Rank#CandidateScore1Maya88%2Wei81%3Aisha75%4Theo68%SORT(_, -1) orders descending. Ties broken by code dimension. The list itself is a single dependency-graph node.
03 Recommend
RecommendCandidateRecoMayaadvanceWeiadvanceAishaholdTheoarchiveA pattern-match collapses score thresholds into a categorical recommendation, ready for the downstream sheet, ATS, or email template.
Core ideas to remember. 2,816 functions to choose from.
currency, percentage, bps, score, fx_rate, date, duration, url, unit:USD. The runtime knows what your values mean.
kind-checkedMAP, REDUCE, SCAN, BYROW, BYCOL. Lambdas first-class. No loops.
5 helpersOne formula → many cells. D1# is one node.
MATCH with guards, defaults, and exhaustive checking at compile time.
WHEN, EVERY, AT — with DEBOUNCE, THROTTLE, serial queues, and missed-run policy.
SELECT as source syntax — joins, CTEs, window functions — with pushdown to BigQuery, Snowflake, Redshift, and Databricks.
predicate releasable means … — derived truth over the model, and WHY(cell) explains any answer.
Declare symbol x and do exact algebra — simplify, factor, differentiate, solve — with a certificate on every result.
Goal seeking, MINIMIZE / MAXIMIZE, linear and mixed-integer programs — as statements, not add-ins.
Math, statistical, financial, engineering, science, logistics, geospatial, computer science, game theory, computational biology, async — and dozens more.
51 categories