|
|
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 |
|
|
|
178c129c97
|
A .fln name carries no ? or !, and .fln has T?, x ?? d, x!, if let over a plain name and a?.b chaining.
|
2026-09-26 14:54:58 +07:00 |
|
|
|
7db1a81d1f
|
Builtins, prelude, vendor and raylib predicates are named with is- or has- and no name carries a ? or !.
|
2026-09-26 14:34:36 +07:00 |
|
|
|
38078cada3
|
A kept if-let chain takes its type from what its arm answered, so an arm that returns stays Never and one with no value makes the chain a statement.
|
2026-09-26 13:47:24 +07:00 |
|
|
|
5038c5954a
|
get on a String is refused as at is, a dyn get's trap names get, a kept else-less form beside a number is blamed at itself in arithmetic and comparisons, and a kept if-let chain with no final else gives an Option.
|
2026-09-26 13:40:16 +07:00 |
|
|
|
b545584de8
|
Master is merged into the when, get and if let lane, and dyn get over text counts characters through at's own body.
|
2026-09-26 13:17:57 +07:00 |
|
|
|
c24b19e7b1
|
Merge master into the dyn char lane
|
2026-09-26 13:09:28 +07:00 |
|
|
|
1b588df6b5
|
Master is merged into the when, get and if let lane after the review fixes.
|
2026-09-26 13:09:24 +07:00 |
|
|
|
79430aca77
|
A lambda's last form is checked at the return its position wants, a call's arguments and a kept cond with no else keep a when as an Option, a when used as an arithmetic operand is blamed itself, elif let reads and prints as a nested if-let, and dyn get over text or a vec runs at's own runtime body.
|
2026-09-26 13:09:21 +07:00 |
|
|
|
1243504ac6
|
.fln has let groups, grid[r c] indices and a not prefix, and a binding lines up under the let's first name.
|
2026-09-26 13:01:34 +07:00 |
|
|
|
a3899f3ecb
|
Master is merged into the when, get and if let lane for the review fixes.
|
2026-09-26 12:53:34 +07:00 |
|
|
|
f35a2b240a
|
Merge master into the dyn char lane
|
2026-09-26 12:51:41 +07:00 |
|
|
|
b1cba196b9
|
A .fln comparison chain may mix < with <=, or > with >=, reading as the and of its tests with every operand evaluated once, left to right, as a < b < c is, and the printers write that and back as the chain.
|
2026-09-26 12:19:03 +07:00 |
|
|
|
62fd7b19bc
|
Master is merged into the when, get and if let lane.
|
2026-09-26 12:13:55 +07:00 |
|
|
|
5ee433a38f
|
A kept when answers an Option, get is a checked lookup over arrays, slices, Vecs and dyn, and if let reads as a two-arm match in both syntaxes.
|
2026-09-26 12:12:48 +07:00 |
|
|
|
349e2d7e72
|
Merge master
|
2026-09-26 12:09:56 +07:00 |
|
|
|
0ed3ce93e2
|
Every char prints as a spelling that reads back as it, with a name or Clojure's \uXXXX for each control character.
|
2026-09-26 11:54:03 +07:00 |
|
|
|
17ff7cb348
|
A binding ends its let's bindings only when its value ends in an open block, the message names the let's own line, and Emacs offers no binding column after such a value
|
2026-09-26 11:11:32 +07:00 |
|
|
|
3d5caf25ae
|
Merge master
|
2026-09-26 11:06:05 +07:00 |
|
|
|
c4452fc500
|
Merge master into the bit operators lane
|
2026-09-26 11:04:32 +07:00 |
|
|
|
473bf0a2b7
|
The bit operators are && || ^^ ~~ in .fln at Python's precedence, take integers only on typed and dyn values, and popcount, leading-zeros, trailing-zeros and the rotations exist on both backends.
|
2026-09-26 10:49:54 +07:00 |
|
|
|
17a7afb297
|
The .fln reader takes loop and recur as names wherever the Lisp loop's spellings are not written, and the convert refusal lists its lines in a sentence of their own.
|
2026-09-26 10:43:10 +07:00 |
|
|
|
63dc853121
|
A binding whose value is a block ends its let's bindings, a tab between let and its name is refused, and only a binding-shaped line under a let gets the alignment advice
|
2026-09-26 10:39:05 +07:00 |
|
|
|
b5380b4750
|
Merge master
|
2026-09-26 10:33:04 +07:00 |
|
|
|
fc463cf320
|
The .fln reader refuses loop and recur, flan convert refuses a .flan file that uses them, and every loop outside recur.flan is a while or until.
|
2026-09-26 10:31:53 +07:00 |
|
|
|
0e9d647aca
|
A let's binding lines must line up with its first name, may name an operator word in parentheses, are refused clearly after a block value, and at the top level may be a typed name alone
|
2026-09-26 09:56:54 +07:00 |
|
|
|
12cd4feff0
|
A .fln let takes more bindings on the lines indented under it, a top-level one more globals, and flan convert writes runs of short bindings that way
|
2026-09-26 06:26:36 +07:00 |
|
|
|
f91ed8ad27
|
Indices in .fln separate like a vector's elements, by spaces between single values or by commas
|
2026-09-26 06:19:59 +07:00 |
|
|
|
e79d9c0d07
|
Merge master into the views lane
|
2026-09-26 06:18:31 +07:00 |
|
|
|
6e006fce27
|
not is a prefix word in .fln, looser than comparisons and tighter than and, with not(x) still a call
|
2026-09-26 06:18:11 +07:00 |
|
|
|
7953376e4e
|
Any typed container of numbers, bools, str, structs, arrays, slices or Vecs crosses into dyn as a view from any storage, and a dev build traps on a view whose frame returned or whose block was released.
|
2026-09-26 06:10:11 +07:00 |
|
|
|
b1404727b6
|
A lambda with a block prints wherever it is last in its brackets, an element after a block lambda is refused as not last, and TAB offers no column of a block whose brackets have closed
|
2026-09-26 06:09:47 +07:00 |
|
|
|
6f6e01db06
|
A bare def is answered with the let to write, and a generic missing its arrow is refused at the end of its line.
|
2026-09-26 05:54:01 +07:00 |
|
|
|
702ebdc9c5
|
In a .fln file a top-level let is a global and def is refused, while a let in a block or an evaluated expression stays local.
|
2026-09-26 05:39:59 +07:00 |
|
|
|
cde4f2ab1b
|
A .fln file writes classes and methods as class, generic, multi and method headers, and flan convert prints them so.
|
2026-09-26 05:39:59 +07:00 |
|
|
|
905a4c53be
|
A struct or union fits on one line, struct Pt(x: i32, y: i32), and flan convert writes that form when it fits.
|
2026-09-26 05:39:59 +07:00 |
|
|
|
de0c8791f3
|
A variable named like a header or clause word, data = 3 or on += 1, is read and printed as an assignment.
|
2026-09-26 05:39:59 +07:00 |
|
|
|
72c73117d6
|
A .fln file writes a type alias as type Row = Vec(i32), and flan check prints nothing for a file that checks unless given --defs.
|
2026-09-26 05:39:59 +07:00 |
|
|
|
1a97dfff77
|
A .fln file writes a condition's parent as struct DiskFull :parent IoError, a macro as macro repeat(i, n, & body) and a loop as loop x = a, y = b, and flan convert prints them so.
|
2026-09-26 05:39:59 +07:00 |
|
|
|
34ef99d1f2
|
A block lambda in code cut mid-line reads against its line's start, an arm or else value ending in => takes its block, and a missing comma between indices shows the indexed spelling
|
2026-09-26 05:37:22 +07:00 |
|
|
|
3c962197f4
|
A .fln lambda's body follows =>, and a lambda's block may sit inside a call's brackets as its last argument
|
2026-09-26 05:17:31 +07:00 |
|
|
|
6c32383539
|
Typed lambdas bind a generic's CFn variables, a local shadows an enum of its name, the lambda-in-brackets fix is the typed let that compiles, an else deeper than a one-line if or after else-if is refused by name, a block if takes a one-line else, and messages spell every type in the code's syntax
|
2026-09-26 00:36:21 +07:00 |
|
|
|
fff1c0b9c3
|
Merge master: return-type inference beside the syntax-following type spellings
|
2026-09-26 00:27:59 +07:00 |
|
|
|
fd1a7f2b36
|
A one-line if takes its else on the next line, lambdas state their types, a restart's report sits on its header, Dir.north names an enum member, messages spell types in the code's syntax, adjacent globals convert adjacent, and a bad map key is one error
|
2026-09-26 00:07:28 +07:00 |
|
|
|
dbddc61b30
|
defvar in a .fln file suggests once and def in its spelling, and x++ on a global suggests ++(x)
|
2026-09-25 23:48:59 +07:00 |
|
|
|
dca29a5605
|
A .fln file's common mistakes are answered in .fln terms, a bare () in a body slot does nothing, and the syntax gaps found writing by hand are listed in TODO.org
|
2026-09-25 23:44:04 +07:00 |
|
|
|
7e48f1eaf5
|
Eight hand-written .fln programs run the same on both backends and through a conversion to parens and back
|
2026-09-25 23:34:16 +07:00 |
|
|
|
2135f6d37f
|
Merge branch 'master' into worktree-agent-a46233a32d1912c78
|
2026-09-25 23:27:55 +07:00 |
|
|
|
0e26af2107
|
A macro body counts as run in order only when nothing outside its templates depends on how the body splits into arguments, a let whose longer scope would reach a macro naming it stays in a do: block, and converted programs with shadowed names and macro bodies print what their paren originals print
|
2026-09-25 23:00:27 +07:00 |
|