[Haskell-cafe] Parse text difficulty
Jan-Willem Maessen - Sun Labs East
Janwillem.Maessen at Sun.COM
Thu Dec 9 11:46:39 EST 2004
Tomasz Zielonka wrote:
> On Thu, Dec 09, 2004 at 10:02:39AM -0500, Jan-Willem Maessen - Sun Labs East wrote:
>
>>And I thought that most programmers used "zipWith", which has to be
>>prefix.
>
>
> You can also use zipWith to simulate zipN, for any N (however, the following
> code uses infix notation):
>
> Prelude> let l = words "Haskell is great"
> Prelude> let zwApply = zipWith ($)
> Prelude> repeat (,,) `zwApply` [1..] `zwApply` l `zwApply` map length l
> [(1,"Haskell",7),(2,"is",2),(3,"great",5)]
> Prelude> map (,,) l `zwApply` [1..] `zwApply` map length l
> [("Haskell",1,7),("is",2,2),("great",3,5)]
>
> I found it useful recently, when I needed zip functions for Trees - this way I
> didn't have to define functions for 3 trees, 4 trees, and so on.
Note also that:
repeat f `zwApply` xs = map f xs
When cooking up my own collection-y things (including splittable
supplies, for example), I generally provide fmap and an equivalent of
zwApply (a generic repeat is not quite so simple or useful). It's a
nice little idiom, and a recommend it highly.
-Jan-Willem Maessen
>
> Best regards,
> Tomasz
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
More information about the Haskell-Cafe
mailing list