:: Eval a :== StateT [([Char], Value)] (Either [String]) a
-int :: Expression -> Either [String] Value
+int :: !Expression -> Either [String] Value
int e = evalStateT (eval e)
[(['_if'], Builtin \i->pure (Lit (Builtin \t->pure (Lit (Builtin \e->
eval i >>= \(Bool b)->pure (if b t e))))))