er)
     </pre><ul><li>Due to limitations of some versions of ghc, type inferrence sometimes fails.
      Eg <code>add1 = (+ 1)</code> fails (eg with ghc 8.0.2) unless we explicitly declare the type
      <code>add1 :: (CanAdd Integer t) =&gt; t -&gt; AddType t Integer</code>
      or use an explicit parameter, eg <code>add1 x = x + 1</code>.</li></ul><h1>Origin</h1><p>The idea of having numeric expressions in Haskell with types
    derived bottom-up was initially suggested and implemented by Pieter Collins