diff --git a/TODO.org b/TODO.org index 092bad6e..53edaa3b 100644 --- a/TODO.org +++ b/TODO.org @@ -10,6 +10,15 @@ pointing at it. A CANCELLED entry carries the one-line reason, because an idea rejected without a record is an idea that gets re-proposed. * Language surface +** NEXT if let +Decided 2026-09-26 (126), Rust's spelling: =if let Some(g) = left= plus a block tests +the pattern and binds =g= in that block only; =elif=/=else= follow as for =if=. Any +=match= pattern may stand where =Some(g)= is. Reads to a two-arm =match=. +** NEXT when as a value, and get as a checked lookup +Decided 2026-09-26 (125): a =when= whose value is used gives =Option(T)=, =Some= of its +body when the test holds and =None= otherwise; as a statement it is unchanged. +=get(xs, i, …)= on an array, slice or Vec gives =Option(T)= instead of trapping on an +index out of range (negative included), one index per dimension. Both typed and dyn. ** NEXT str and String Decided 2026-09-25: the typed read-only text is =str= (the rename from =string= is