1801 Commits

Author SHA1 Message Date
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
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
0598949fcb Master merges into the as-chain lane. 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
adfab2d482 A narrowed name keeps its assignability, a local whose address is taken or that a fn assigns is not narrowed, a trailing ? tests a whole chain, and the optional refusals name the test to write. 2026-09-26 16:08:16 +07:00
d138155eae A dyn operand anywhere in an arithmetic, bitwise or comparison fold makes the fold dyn from there on, and min or max refuses one past its first pair as it does in it. 2026-09-26 16:08:08 +07:00
2243b55259 Intermittent dev-session tests wait until the features land. 2026-09-26 15:53:50 +07:00
8afa054349 Merge master into the .fln optionals lane. 2026-09-26 15:52:00 +07:00
d252eee2b2 In .fln x? tests that a value is present and narrows a local Option to its payload in the block it guards, and e? as g names what a test found. 2026-09-26 15:48:36 +07:00
6c6b5a60cb ?? continues a line, a chain or an unwrap is no place to assign, nested marks and a ? on a value say what to write, a lowercase type takes ?, and a predicate reads as a word with its name beside it. 2026-09-26 15:36:49 +07:00