CS 386L Programming Assignment (HW 6)

Implement type inference for a language with:

Implement Let polymorphism, using the algorithm defined on pages 333-334.

Implement a few basic operations on data types, including multiplication, addition, equality

Use the State monad to collect your constraints

Implement the unification algorithm

Define Show instances for your data types to output the results using a pleasant notation

Here are grammar files and abstract syntax to get you started: