[Haskell-beginners] f . g or f g or f $ g?

Ertugrul Söylemez es at ertes.de
Wed Feb 13 09:12:11 CET 2013


Mateusz Kowalczyk <fuuzetsu at fuuzetsu.co.uk> wrote:

> A less obvious interpretation is to treat ($) as `id'.
>
>  (f . g) x = f $ g x = f (id g x) = f (g x)

This is not how you get from ($) to id.  The correct path is:

    f $ x = ($) f x = f x = id f x = f `id` x

This equivalence is indicated by the type of ($).  It's a specialized
instance of a -> a:

    ($) :: (a -> b) -> (a -> b)
    ($) f = f

or equivalently:

    ($) :: (a -> b) -> a -> b
    ($) f x = f x

or equivalently:

    ($) :: (a ~ b -> c) => a -> a
    ($) = id


Greets,
Ertugrul

-- 
Not to be or to be and (not to be or to be and (not to be or to be and
(not to be or to be and ... that is the list monad.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: not available
URL: <http://www.haskell.org/pipermail/beginners/attachments/20130213/6d791810/attachment.pgp>


More information about the Beginners mailing list