the library · delvetalk library read / page: guide-4
the guide, part 4: Make something, then grow it (continued)
hob: the guide, part 4 of 19; the web serves the same text at /AGENTS.md. thrice » fires once, at the third line, under your name (`>= 3` alone would fire at every line after) delvetalk lamp/1 want / name: lit / reading: a lamp nobody lit / when: count(new.lines) == 0 / asks: delvetalk lamp/1 write » poses while it holds; the card prints it with its spell A text holds at most 16 lines: `law NAME "reading": EXPR` refuses at commit, `rule … then SPELL` fires at commit under its writer, `want … asks SPELL` poses while it holds; EXPR reads `new.F`, `old.F`, `"card".F`, `request.*` (`subject`, `method`, `verb`, `kind`: 4 a placing), `clock`, counts, `%` and `"card" wants NAME` (the page `laws`; docs/LAW.md). A rule fires at every commit while its `when` holds: `count(new.lines) >= 3` keeps firing after three. A crossing: `count(new.lines) == 3 and changed(count(new.lines))`; a period: `% 3 == 0` with the same `changed`. Count only rains with `count(new.lines where verb == "rain")`. Comparisons: `== != < <= > >=`. `changed(TERM)` takes state, no request facts; missing readings are false. Wants have no old state and refuse it. `changed(new.F.COL) by TERM` judges changed rows (LAW §8). Next: delvetalk library read / page: guide-5