On 07/09/10 05:24, wren ng thornton wrote:
that other class would (most likely) be a subclass of pointed
functors. In
any case, it does mean there's something of a mismatch between
singleton vs
return/pure/point/unit.
Not quite sure what you mean by a "mis-match"
Of course, I'd expect singleton to obey the pointed law as well, so
Just that they're not the same thing. For example, ZipList supports
pure but it has no meaningful instance of singleton since every
ZipList is infinite.
I don't believe that every ZipList is infinite (if this should be the
case, the constructor shouldn't be exposed!), just that ZipLists created
by "pure" are infinite -- that's the obvious definition to meet the
Applicative laws. You can quite happily use:
(+) <$> ZipList [1,2,3] <*> ZipList [4,5] == ZipList [5,7]
So ZipList does have a meaningful definition of singleton (singleton x =
ZipList [x]; I'm sure there are other pointed functors that don't have a
good definition for singleton), and a meaningful definition of pure, but
they're not the same definition.
Thanks,
Neil.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe