
#11815: Data.List: Add a function to get consecutive elements (mapConsecutives) -------------------------------------+------------------------------------- Reporter: holmisen | Owner: Type: feature request | Status: new Priority: low | Milestone: Component: libraries/base | Version: Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by nomeata): Fun fact: The definition is equivalent to {{{#!hs mapConsecutives :: (a -> a -> b) -> [a] -> [b] mapConsecutives f xs = zipWith f xs (tail xs) }}} because of lazyness and `zipWith _ [] _ = []`. But it might still not be worth inlining it, as it cannot not fuse with `xs` for various reasons. No strong opinion on this function, but I would not object. Is there a better name that immediatelly gives away what it does? Also, in the interest of smaller building blocks, should we maybe provide {{{#!hs consecutiveElements:: [a] -> [(a,a)] consecutiveElements xs = zip xs (tail xs) }}} instead? Again, better name wanted. It also has a slightly more helpful type signature. Or provide both, similar to `zip` and `zipWith`. How about the names `zipConsecutive` and `zipConsecutiveWith`? By their analogies to `zip` and `zipWith`, the usage should be pretty clear. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/11815#comment:1 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler