{-# LANGUAGE NoMonomorphismRestriction #-} -- To get polymorphic types without type annotations module Examples where -- * Haskell terms to represent as a custom (G)ADT, String, -- Identity, TH.CodeQ, or whatever... -- They could perfectly well be "black boxes" in another Haskell module. -- Their only constraint is to have only arguments whose type is *polymorphic* -- (possibly with contraints or type parameters though). -- Note the beta-reductible '_w', it will be normalized-out. e0 = \x y z -> x / y + y + 2 * z + (\_w -> y) z -- Note that 'f' is a function: arguments can be functions. e1 = \f x -> f x