Mini Haskell Type Inference

As part of my introduction into functional programming and its practices I constructed a type inference script for a subset of the haskell language to better understand the formalism and the functionality of the type system of Haskell.

This algorithm used type unification to infer the types of expressions and variables. This simplified version of the language supported integer and boolean constants, variable identifiers, primitive operators, conditionals and function applications as well as user-defined functions but no overloading.