Dependently Typed Lambda Calculus in Haskell