Currying RFC

Automatic currying of all functions and closures
`getChar` is [not a zero-argument function](http://conal.net/blog/posts/everything-is-a-function-in-haskell), (from the outside) it's just a *value* representing an IO action, that can be executed by being sequenced in `main`.

Anyway, as I said above 0 is not "logically" the base case, especially not for a closure taking at least one argument, e.g. `let f = |a| { ... }; f()`.