Sat Jul 23 16:55:04 CEST 2011

Very simple type system -> inference is trivial. Can we ignore?

What I'm trying to do is almost trivial.  There is no difficult type
inference.  In fact, it's quite simple: types promote from int ->
float if necessary, and need to be explicitly cast down from float ->

This isn't mathematically correct but will probably be the simplest
thing to do.  Every expression is annotated with its type, and this is
"inferred" through straight dataflow.

Let's try that first.

The idea is this:

  Expr a -> Expr t a

with t representing the type annotation.  Put all lifting and
converting in a type class (TypeTag t => ...)