On Jan 3, 2008 6:08 AM, Achim Schneider <[EMAIL PROTECTED]> wrote:

> Achim Schneider <[EMAIL PROTECTED]> wrote:
>
> > [...]
>
> I'm trying to grok that
>
> [] = id
> ++ = .
>
> in the context of Hughes lists.
>
> I guess it would stop to slip away if I knew what : corresponds to.
>

Well, (:) has type a -> [a] -> [a], so a function corresponding to (:) for
Hughes lists should have type

foo :: a -> H a -> H a

that is,

foo :: a -> ([a] -> [a]) -> [a] -> [a]

so it can be written

foo x h = (x:) . h

which lambdabot informs me can also be written as (.) . (:).  But in the end
I'm not sure how helpful that is for understanding Hughes lists! I think the
key sentence from the paper is this: "by representing a list xs as the
function (xs ++) that appends this list to another list that has still to be
supplied."  If you understand that sentence, then you can understand why []
is id and (++) is (.).

-Brent
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to