Monomorphism

From HaskellWiki
Revision as of 00:43, 10 November 2007 by EricKow (talk | contribs)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.


Monomorphism is the opposite of polymorphism. That is, a function is polymorphic if it works for several different types - and thus, a function is monomorphic if it works only for one type.

As an example, map is polymorphic. It's type is simply

map :: (a -> b) -> [a] -> [b]

However, the function

foo :: (Int -> Int) -> [Int] -> [Int]
foo = map

performs an identical operation to map (as is evident from the second line), but has a monomorphic type; it will only accept lists of Int and functions over them.

Perhaps you were looking for monomorphism restriction?