
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. Thanks Stephen