- big things to implement:
  * exceptions (I guess setjmp/longjmp model)
  * standard library (started)
  * conditional compilation
  * compilation of .g file should yield .o and .go files, .go would contain
    certain information for linker, like used exceptions

- other stuff
  * string literals should be concatenated (e.g "he" "llo" should be "hello")
  * think about unicode strings
  * dumping .h file for C interface from module

- things that are known to be broken
  * having variable named the same in nested scopes, when the variables
    goes to the closure
  * floats in unions
  * complex pattern matching with exhaustive warnings

- typechecker:
  * implement full flagged type reconstruction

- possible optimizations:
  * if function doesn't pass its closure anywhere, we could allocate closure
    with alloca (or even simply put closure as variable on the stack), 
    which would be *a lot* faster. Similarly for passing lambda expressions
    just up the call stack
  * try blocks could be stored in continuous fragment of memory, as they
    are added and removed in a LIFO way.
  * when calling top-level functions, not all arguments needs to be of
    pointer size (because auxiliary function needs to be generated anyway,
    if we want to use it as functional value), this is especially nice 
    to floats

- cleanups:


# $Id: TODO,v 1.7 2002/02/20 09:40:53 malekith Exp $
# vim:tw=75
