Monomorphism
Revision as of 19:37, 9 November 2007 by TabocRelde (talk | contribs)
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.
c4tcnaalc
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?