- big things to implement:
  * exceptions (I guess setjmp/longjmp model)
  * not-so-big -- bind expressions with (wfl ...) nodes for debbuger,
    also it would be nice to remove redutant wfl's in ksi.ml [done, but
    untested]
  * structures
  * polimorphic structures
  * tuples
  * unions + pattern matching
  * link garbage collector in
  * standard library

- things that are known to be broken
  * floats... esp. passing them to functions, it should be implemented
    as passing pointers.
  * interface compiler allows more then one occurence of the same symbol,
    even with diffrent types
  * having variable named the same in nested scopes, when the variables
    goes to the closure

- typechecker:
  * check whatever each patch in non-void function ends with return statement
  * implement full flaged 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. Similary for passing lambda expressions
    just up the call stack
  * try blocks could be stored in continous 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 (becouse auxilary function needs to be generated anyway,
    if we want to use it as functional value), this is especially nice 
    to floats

- cleanups:
  * all statements should return void is Ksi sense, then strange conversion
    in If() wouldn't be nessesery


# $Id: TODO,v 1.10 2001/11/22 08:44:09 malekith Exp $
# vim:tw=75
