[Haskell-cafe] Question about Newtype "op()" function arguments.

David Banas capn.freako at gmail.com
Fri Jun 7 16:08:19 CEST 2013

Hi All,

Referring to the following, which is taken from the *Control.Newtype

op :: Newtype<http://hackage.haskell.org/packages/archive/newtype/0.2/doc/html/Control-Newtype.html#t:Newtype>
o => (o -> n) -> n ->

This function serves two purposes:

   1. Giving you the unpack of a newtype without you needing to remember
   the name.
   2. Showing that the first parameter is *completely ignored* on the value
   level, meaning the only reason you pass in the constructor is to provide
   type information. Typeclasses sure are neat.

As point #2, above, emphasizes, the only purpose for the first argument to
the function (i.e. - the constructor "(o -> n)") is to specify the type of
'n'. However, being a *newtype*, 'n' can have only one constructor. So, why
is it necessary to pass in the constructor to this function, when we're
already passing in 'n'?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20130607/05dcfd8d/attachment.htm>

More information about the Haskell-Cafe mailing list