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.
Eight ideas to remember. Five hundred to choose from.
currency, percentage, bps, fx_rate, date, duration, email, url. The runtime knows what your numbers mean.
built-inMAP, 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. Cells that fire on edges, schedules, and moments in time.
>>reads left-to-right the way you'd describe a workflow.
Math, statistical, financial, lookup, text, date, domain, logical, database, engineering, information, async — across twelve categories.
12 categories