# Todo - [x] Env shorthand - [x] String interpolation - [x] Aliases - [x] Env vars - [x] Sub commands - [x] Floats - [x] Tests - [x] Decl requires $ but shouldn't - [x] alias highlighting at call site - [x] refactor into subcrates - [x] subcommand alias - [x] type inference from successful parse (eg not `List` but `List`) - [x] parsing tables - [x] Block params - [x] Ranges - [x] Column path - [x] ...rest without calling it rest - [x] Iteration (`each`) over tables - [x] Row conditions - [x] Simple completions - [x] Detecting `$it` currently only looks at top scope but should find any free `$it` in the expression (including subexprs) - [x] Signature needs to make parameters visible in scope before block is parsed - [x] Externals - [x] Modules and imports - [x] Exports - [x] Source - [x] Error shortcircuit (stopping on first error). Revised: errors emit first, but can be seen by commands. - [x] Value serialization - [x] Handling rows with missing columns during a cell path - [ ] Input/output types - [ ] Support for `$in` - [ ] ctrl-c support - [ ] operator overflow - [ ] finish operator type-checking - [ ] Overlays (replacement for `autoenv`) ## Maybe: - [ ] default param values? - [ ] Unary not? - [ ] let [first, rest] = [1, 2, 3] (design question: how do you pattern match a table?)