[Haskell-cafe] Variable-arity zipWith (re)invented.

Takayuki Muranushi muranushi at gmail.com
Sat Dec 8 16:27:12 CET 2012


Continued discussion from

https://groups.google.com/d/topic/haskell-cafe/-e-xaCEbd-w/discussion
https://groups.google.com/d/topic/haskell-cafe/kM_-NvXAcx8/discussion

Thank you for all the answeres and thinkings;


Here's zipWithN for general Zip functors: [1] . This, together with
[2] may constitute a small hackage. A modification from Wren's idea to
[1] is the use of fmap instead of repeat.

I'm wondering if there are any laws for Zip functors. I first thought
that there are similarity between Zips and Applicatives, as [3] states

>    instance Applicative f => Zip f where
>        zip = liftA2 (,)

However, my intuition is that zipping two arrays should result in an
array of size of the same order as two, giving rise to a Zip functor
law candidate:

zipWith const xs $ zipWith const xs ys == zipWith const xs ys

which is violated by the above statement "zip = liftA2 (,)" .




[1] https://github.com/nushio3/practice/blob/master/variable-arity/ZipWithN-2.hs
[2] https://github.com/nushio3/practice/blob/master/free-objects/zipf-12.hs
[3] http://hackage.haskell.org/packages/archive/TypeCompose/0.9.7/doc/html/Data-Zip.html




--
Takayuki MURANUSHI
The Hakubi Center for Advanced Research, Kyoto University
http://www.hakubi.kyoto-u.ac.jp/02_mem/h22/muranushi.html



More information about the Haskell-Cafe mailing list