the stable version of the type inferencer. no support for data structures.
-- infinitely recursive function
let recursive = fix \self -> \x -> self x
in recursive 20
returns
b -> c
basically the same as in ghci
> let rec x = rec x
> :t rec
> rec :: t1 -> t2
latest semi-stable version
basically stable + support for ADTs:
data MaybeInt
= Just Int
| Nothing
WARNING: from this version on, I would not advise you to use the framework. It lets very common errors pass, that can result in errors later in the compiler pipeline. support for adts with type variables:
data Maybe a
= Just a
| Nothing
problems:
- the GADTs can only be concrete. You cant have
f :: (a -> m a) -> a -> m a
solves the problem of the previous iteration, but lacks kind inference, so it very often lets errors pass.
Experimental (GADT-TVs) + Kind Inference.