+Extreme Haskell: Typed Expression EDSLs