Examples of Dependently-typed programs in Haskell