Instead of Types you should have Schemes in startEnvironment in Environment.hs.
Also the type of print is wrong (IO of what?). But I think the current idea is to have printChar as the primitive and define print in sugar.
Why is concat a primitive function? It can easily be defined in sugar.
Undefined should not be a constructor value. I suppose it should use throw. Also it's type is wrong. Undefined is type a, not Undefined a.
The type of tuple constructors are incorrect.
The type of or is incorrect i think (it looks like it is (Bool -> Bool) -> Bool ? The types of eq and gt have a similar problem. Also it's a bit problematic to have eq being a -> a -> Bool since not all values can be compared (notably not functions).
Cons and Nil are still listed several times. Probably the ones without # should be removed.
Instead of Types you should have Schemes in startEnvironment in Environment.hs.
Also the type of print is wrong (IO of what?). But I think the current idea is to have printChar as the primitive and define print in sugar.
Why is concat a primitive function? It can easily be defined in sugar.
Undefined should not be a constructor value. I suppose it should use throw. Also it's type is wrong. Undefined is type a, not Undefined a.
The type of tuple constructors are incorrect.
The type of or is incorrect i think (it looks like it is (Bool -> Bool) -> Bool ? The types of eq and gt have a similar problem. Also it's a bit problematic to have eq being a -> a -> Bool since not all values can be compared (notably not functions).
Cons and Nil are still listed several times. Probably the ones without # should be removed.