Type inference, Haskell and dependent types. - Adam Michael Gundry (2013)