[Haskell-cafe] monomorphism restriction

Ryan Ingram ryani.spam at gmail.com
Mon Jun 16 17:22:55 EDT 2008


On 6/11/08, Jonathan Cast <jonathanccast at fastmail.fm> wrote:
> This doesn't apply to f, though --- it has a function type, so the user
> presumably already knows it won't be subject to updating, no?
> Distinguishing functions from variables by the form of declaration,
> rather than the type, seems somewhat questionable to me.

Not necessarily, contrast these two definitions:

f = foldr (+) 0
f_expensive = let n = head $ drop 100000 $ fibs 1 1 in foldr (+) n

With the monomorphism restriction in place, f_expensive only
calculates n once.  Without, it gets calculated each time f is
instantiated.

  -- ryan


More information about the Haskell-Cafe mailing list