- write a formatter, so that I dont have to manually update the test code everytime. With a formatter, I can just change the parser, parse all the test file using old parser, spit out new code using new syntax, and format them
- [] write a markdown-code snippet checker, to ensure that examples in doc are up to date
- change access to, private (default), export, public-export
- allow name ambiguity (due to overloading) to propagate until a certain boundary before calling it an error [function_overloading_2 and 3]
- mechanism for safe native function call
- migrate to use interpreter
- [] make operator to have lower precedence, dot to have higher precedence ?
- better syntax for CPS, example ~async(getFoo ! + (getBar !))
- java package (folder as module, files within a folder can access the symbol of each other without having to write import)
- use #{} for record
- use #() for array
- use square braket instead of backtick for quoted identifier (improve readability)
- [] namespace (without mutually recursive module)
- [] default can be imported, add public/private identifier
- [] review parse context
- [] add code coverage to check for untested branch
- [] detect module/type/name alias cycles
- [] new tuple syntax for better DSL creation
- [] new lambda syntax ({case x -> y} OR {it print})
- [] use back curly bracket for record
- [] type casting
- constrained polymorphism
- cps sugar
- raw string literal with variable length quotes
- [] tail call elimination
- [] auto lazification?
- restore square bracket array
- [] record with implicit numeric-indexed field
- [] module as records with higher-kinded type
- [] unit test
- [] first class documentation (not just comments), allow declaring links to other symbols
- [] use parentheses for type application
- [] record @ pattern
- [] import from http URL
- [] doc string (string literal after name)