[Haskell-cafe] Learning GADT types to simulate dependent types