Merge master
This commit is contained in:
commit
d8ece682d3
12
TODO.org
12
TODO.org
@ -11,6 +11,11 @@ rejected without a record is an idea that gets re-proposed.
|
|||||||
|
|
||||||
* Language surface
|
* Language surface
|
||||||
|
|
||||||
|
** NEXT Dyn unless annotated
|
||||||
|
Decided 2026-09-25: in both syntaxes an unannotated value is dyn — [6 2 4 9] is a dyn
|
||||||
|
vector, 1 a dyn integer — and a typed value needs an annotation. Rules and migration
|
||||||
|
wait on a design pass.
|
||||||
|
|
||||||
** DONE Dynamic-first, and the dyn half of the language
|
** DONE Dynamic-first, and the dyn half of the language
|
||||||
CLOSED: [2026-09-20]
|
CLOSED: [2026-09-20]
|
||||||
An unannotated parameter or return is =dyn=: a NaN-boxed value over a mark-sweep
|
An unannotated parameter or return is =dyn=: a NaN-boxed value over a mark-sweep
|
||||||
@ -296,6 +301,13 @@ keyword resolves against the expected type and against nothing else, so two enum
|
|||||||
could always share a member spelling. What the prefix buys is the call site read
|
could always share a member spelling. What the prefix buys is the call site read
|
||||||
on its own.
|
on its own.
|
||||||
|
|
||||||
|
** NEXT The .fln printer writes a flat let where the scope does not matter
|
||||||
|
Decided 2026-09-25: a let whose name no later statement of its block mentions prints
|
||||||
|
flat, not as a nested block; a one-argument and/or prints as its argument.
|
||||||
|
|
||||||
|
** NEXT A dyn vector prints as [1 2 3], a map as {:a 1}
|
||||||
|
Decided 2026-09-25: no space after the opening bracket, in every renderer.
|
||||||
|
|
||||||
** WAIT ML-style patterns
|
** WAIT ML-style patterns
|
||||||
Held 2026-09-25 as a future direction, like the JS backend: nested destructuring,
|
Held 2026-09-25 as a future direction, like the JS backend: nested destructuring,
|
||||||
guards, or-patterns, literals at any depth, exhaustiveness over the nesting.
|
guards, or-patterns, literals at any depth, exhaustiveness over the nesting.
|
||||||
|
|||||||
@ -27,10 +27,21 @@ fn selection-sort(coll: [$t]) -> () where ordered?($t)
|
|||||||
fn insertion-sort(coll: [$t]) -> () where ordered?($t)
|
fn insertion-sort(coll: [$t]) -> () where ordered?($t)
|
||||||
let i = 1
|
let i = 1
|
||||||
let length = length(coll)
|
let length = length(coll)
|
||||||
while and(i < length)
|
while i < length
|
||||||
let j = i
|
let j = i
|
||||||
while j > 0
|
while j > 0 and coll[j] < coll[dec(j)]
|
||||||
and coll[j] < coll[dec(j)]
|
let temp = coll[j]
|
||||||
|
coll[j] = coll[dec(j)]
|
||||||
|
coll[dec(j)] = temp
|
||||||
|
--(j)
|
||||||
|
++(i)
|
||||||
|
|
||||||
|
fn insertion-sort-dyn(coll)
|
||||||
|
let i = 1
|
||||||
|
let length = length(coll)
|
||||||
|
while i < length
|
||||||
|
let j = i
|
||||||
|
while j > 0 and coll[j] < coll[dec(j)]
|
||||||
let temp = coll[j]
|
let temp = coll[j]
|
||||||
coll[j] = coll[dec(j)]
|
coll[j] = coll[dec(j)]
|
||||||
coll[dec(j)] = temp
|
coll[dec(j)] = temp
|
||||||
@ -39,7 +50,7 @@ fn insertion-sort(coll: [$t]) -> () where ordered?($t)
|
|||||||
|
|
||||||
fn main() -> i32 = 0
|
fn main() -> i32 = 0
|
||||||
|
|
||||||
comment():
|
comment:
|
||||||
insertion-sort([\I \N \S \E \R \T \I \O \N \S \O \R \T])
|
insertion-sort([\I \N \S \E \R \T \I \O \N \S \O \R \T])
|
||||||
insertion-sort(slice([6 2 4 9 1 9 4 5], 0, 8))
|
insertion-sort(slice([6 2 4 9 1 9 4 5], 0, 8))
|
||||||
let str = bytes("INSERTIONSORT")
|
let str = bytes("INSERTIONSORT")
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user