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