Stephen Tetley schrieb:
Hello all


Having traversals with special behaviour for the first or last element
is useful for my current work:

-- first element special
--
anacrusisMap :: (a -> b) -> (a -> b) -> [a] -> [b]
anacrusisMap _ _ []     = []
anacrusisMap f g (a:as) = f a : map g as

-- last element special
--
cabooseMap :: (a -> b) -> (a -> b) -> [a] -> [b]
cabooseMap _ _ []     = []
cabooseMap f g (a:as) = step a as where
  step x []           = [g x]
  step x (y:ys)       = f x : step y ys


*Overlay1> anacrusisMap (+1) id [1..10]
[2,2,3,4,5,6,7,8,9,10]

*Overlay1> cabooseMap id (+1) [1..10]
[1,2,3,4,5,6,7,8,9,11]

My question (trivial, but still...) - is there any prior art naming
these functions?

For the record, my name derivation is:

+ anacrusis - musical term, the pickup notes before the first bar in a score.

+ caboose - there was discussion on Haskell-Cafe a couple of months
ago about a list data type with a distinguished terminal type. Caboose
is the name I remember.
I build such functions using viewL/viewR or switchL/switchR:
http://hackage.haskell.org/packages/archive/utility-ht/0.0.5.1/doc/html/Data-List-HT.html#v%3AviewL

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

Reply via email to