Remove unused extensions
Implement foldAST.
Use foldPerlAST.
Use really new name while unifying.
Allow buildConstraint to throw errors directly.
Finish a to-do.
Add @_ to AST explicitly
Pack buildConstraint and unify in the same monad.
Split Inferance.hs
Remove redundant imports.
Ride on Substable type class.
Use newtype hack to share codes.