1807 Commits

Author SHA1 Message Date
c3f1adb0c3 TODO.org queues decision 141: a dyn vector is a value, copied on first write. 2026-09-26 18:25:08 +07:00
2010655d60 The vendor libraries, examples and sand are written in .fln. 2026-09-26 18:24:54 +07:00
5a8e7fa87b TODO.org records that eval-in-frame can assign loop indices and pattern bindings. 2026-09-26 18:21:09 +07:00
8d198f88c9 A condition can bind what it tests with as, inside and chains too, and the bound name is read-only in the program and in the debugger. 2026-09-26 18:21:00 +07:00
cfdc6e29fd A T value flows into a T? where one is wanted, and a kept else-less form whose arm is already T? gives T?, not T??. 2026-09-26 18:16:34 +07:00
d6c33928f5 A name an as bound is refused as itself when assigned, in the program and in a stopped frame alike. 2026-09-26 18:16:13 +07:00
c1018d87c5 Every reference to the removed .flan files is updated, generated.fln's stale banner line is regenerated, and the ported .fln files read like handwritten Flan. 2026-09-26 18:13:56 +07:00
fd6510e0b5 Merge branch 'master' into worktree-agent-afbb9bcfd4d47bb1b
# Conflicts:
#	lib/check.ml
2026-09-26 18:06:56 +07:00
8333ba017d A literal local read as a typed array's element takes that element's type, and the Option str refusal test names str. 2026-09-26 18:06:29 +07:00
b814aca187 A kept when or else-less chain over an Option arm is that Option, flattened one level, unless an Option of it is wanted. 2026-09-26 18:02:43 +07:00
83bb65957d Each name an as binds is a slot of its own under its name, so the break loop's locals show it with what the test found. 2026-09-26 17:59:59 +07:00
09ffc27883 Master merges into the as-chain lane. 2026-09-26 17:52:20 +07:00
e4d0e9c60e A pause mark on any column of a condition keeps what it binds, an as in parentheses gets its own refusal, and what an as finds is held in one slot. 2026-09-26 17:52:06 +07:00
44812855c7 A u64 past the largest dyn int traps at the crossing, a dyn anywhere in an operation makes it dyn, and dyn unbox traps name their site. 2026-09-26 17:51:31 +07:00
b8e68a48f7 A literal local read at T? takes T, None may come first in an if, an Option around an array of Options takes a literal, and a literal refused at T? names the Option. 2026-09-26 17:45:44 +07:00
d14cffa23a (the dyn <literal>) beside nil traps at run time, and a dyn opened at f64 or bool traps at its site. 2026-09-26 17:44:27 +07:00
c4547adb25 Master merges into the as-chain lane. 2026-09-26 17:42:08 +07:00
c60cc33b95 A dyn operand in a fold's first pair keeps the form dyn at a typed want, so only the answer is opened and every position gives the same result. 2026-09-26 17:30:44 +07:00
e85ca2c431 Master is merged into the dyn crossing lane again. 2026-09-26 17:30:44 +07:00
3afb7e13af Master merges into the as-chain lane, and as names what a pipe answers. 2026-09-26 17:22:07 +07:00
8f46a43e7a Merge branch 'master' into worktree-agent-afbb9bcfd4d47bb1b 2026-09-26 17:21:11 +07:00
89d54a47f4 A None arm written first in a match meets the other arms at their Option. 2026-09-26 17:21:06 +07:00
70be2a57e6 Master is merged into the dyn crossing lane again. 2026-09-26 17:18:36 +07:00
f25f69c0be The comment on the prelude's macro forms says the prelude is read once. 2026-09-26 17:18:34 +07:00
4d85cefbe2 A bare nil in a typed fold is refused in every position while a dyn holding nil traps, a fold operand asked on its own terms records no literal-local use, and a wide literal at dyn says it has no dyn value. 2026-09-26 17:18:29 +07:00
2af5dee0d0 The prelude is written in .fln and read once per process. 2026-09-26 17:18:15 +07:00
09f1e4369f An Option plus a literal is refused at the operator, the literal having been wrapped. 2026-09-26 17:16:16 +07:00
87709618f9 An as chain's refusals quote the whole condition, and narrowing after an as is tested. 2026-09-26 17:15:24 +07:00
21c2e78808 .fln has a pipe, x |> f(a), that passes x as the first argument. 2026-09-26 17:15:09 +07:00
0c7a53f526 A pipe into a language word is refused, and a pipe the next operator or an as swallows is refused with the bracketed form as the fix. 2026-09-26 17:11:15 +07:00
cb60df1dc0 A T is wrapped in Some wherever a T? is wanted, one level at a time and never unwrapped back. 2026-09-26 17:11:12 +07:00
e219e90446 Merge branch 'master' into worktree-agent-abfc2bd050afe177a 2026-09-26 17:07:07 +07:00
0598949fcb Master merges into the as-chain lane. 2026-09-26 17:07:04 +07:00
5d5018011e Vendor packages, examples/*, and sand.flan are ported from .flan to .fln, and flan generate-c writes generated.fln. 2026-09-26 17:07:04 +07:00
c1916ed819 e as g is any test of a condition's and chain, binding g for the rest of the chain and the block. 2026-09-26 17:07:01 +07:00
5a3d480edf In .fln, x |> f(a) reads as f(x, a), below or, with the Emacs mode indenting and marking pipe lines. 2026-09-26 16:58:53 +07:00
f484f16190 Master is merged into the dyn crossing lane. 2026-09-26 16:48:32 +07:00
7dcef05df3 A u64 past the largest i64 traps where it crosses into dyn, a dyn nil past a fold's first pair traps at run time, and an is-numeric $t boxes beside a dyn. 2026-09-26 16:47:28 +07:00
1763157ef2 Forms .fln cannot yet write are recorded. 2026-09-26 16:40:59 +07:00
edd2955383 The hand-written corpus holds the author's substring-search and sort practice file. 2026-09-26 16:37:18 +07:00
d8a70fea04 Merge master into the prelude .fln lane. 2026-09-26 16:37:09 +07:00
66fce31dbd The prelude is lib/prelude.fln, embedded at build time and read by the indented reader. 2026-09-26 16:37:02 +07:00
b49c6ad9cd The hand-written corpus gets the author's substring-search and sort practice file, updated to current .fln syntax with a main that runs and prints each function. 2026-09-26 16:36:35 +07:00
15ff547e52 rand-int stays u64. 2026-09-26 16:29:38 +07:00
3a2f3327f6 Three dyn-crossing gaps found beside the fold fix are recorded. 2026-09-26 16:28:15 +07:00
f4d79b0147 A dyn operand anywhere in a fold makes the rest of it dyn, and min and max take dyn numbers and chars. 2026-09-26 16:28:15 +07:00
181f7da037 Merge master into the dyn fold lane.
# Conflicts:
#	lib/check.ml
2026-09-26 16:16:25 +07:00
97e89c8d40 min and max take a dyn in any position, picking numbers by value and chars by code point in the dyn runtime and trapping at the form on anything else. 2026-09-26 16:15:52 +07:00
ac752d1405 .fln names carry no ? or !, predicates are is- and has-, and optionals are T?, x ??, x!, x? with narrowing, as, and ?. chains. 2026-09-26 16:13:32 +07:00
bd08d6524c Merge master into the .fln optionals lane. 2026-09-26 16:08:16 +07:00