When type checking, added a step of renaming the parameter types so if they have type variables they don't collide with the ones in the receiver type.
Added checks so we cannot construct infinite types like: a ~ (a -> b)
The error handling is a bit messy and can be improved, I'm just raising errors and catching it in some places :/
Composition is not now an special case. High order functions are now just another case of type checking.
Added $ operator.
Added a couple files for constraintSolving and renaming of type variables (should we add this to an index.html I'm not aware of so it works when deployed? :thinking: )
There are several changes in the PR: