[Haskell-cafe] Does somebody know about these functions?
wren ng thornton
wren at freegeek.org
Thu Mar 1 05:40:01 CET 2012
On 2/28/12 1:25 PM, Brent Yorgey wrote:
> On Tue, Feb 28, 2012 at 06:06:25PM +0100, Johan Holmquist wrote:
>>
>> inter :: (a -> a -> b) -> [a] -> [b]
>> inter f [] = []
>> inter f l = map (uncurry f) $ zip l (tail l)
>
> I've never seen this function defined anywhere, but it looks nice.
I've used it a few times, but never seen it defined in libraries. Of
course, you can simplify the implementation by:
inter f xs = zipWith f xs (tail xs)
>> withPair :: (a' -> b' -> c) -> (a -> a') -> (b -> b') -> (a,b) -> c
>> withPair f fa fb (a,b) = fa a `f` fb b
>
> Note that
>
> withPair f g h === uncurry f . (g *** h)
Also:
import Data.Function.Pointless -- from pointless-fun
withPair f g h = uncurry (f $:: g ~> h ~> id)
which is certainly no shorter since pointless-fun doesn't handle tuples
directly like the arrow combinators do, but it does generalize much
further. Though I can't say as I've used the withPair idiom very often,
despite using (***) and friends quite regularly...
--
Live well,
~wren
More information about the Haskell-Cafe
mailing list