Short term things to do:

* Update the library so that type synonyms are used sensibly.
* Stack traces.
* Full pattern matching.
* Finish namespaces so that types also live in per-module namespaces.
* Implementation of infix operators relies too much on C. Add
  specialised VM instructions instead.
* Add op= shorthand for more operators.
* Full libgcrypt binding to replace OpenSSL encode/decode functions.

Long term ideas:

* Switch to a register based VM, rather than stack based. (????)
* Reorganise parser.
* Tidy up Raw/Expr data types (big, boring job, so unlikely to happen).
* Decent library.
* Optimisations, in general.
* Identify pure functions for:
  + Inlining (making macros like #defines).
  + Common subexpression elimination.
  + Lazy evaluation?  
* User defined optimisations via rewrite rules.
* Documenting the typing rules would be nice, if boring and unlikely
  to be read.

Random thoughts

* Unit testing support.
* Simple compression library, and compression in webapps.
* Dynamic linking support would be nice.
