This is indeed a job for lens, particularly, the Iso type, and the "under" function. Lens conveniently comes with a typeclassed isomorphism called "reversed", which of course has a list instance.
>>> under reversed (take 10) ['a'.. 'z'] "qrstuvwxyz" -- Dan Burton On Aug 17, 2013 10:23 AM, "Anton Nikishaev" <m...@lelf.lu> wrote: > Christopher Done <chrisd...@gmail.com> writes: > > > Anyone ever needed this? Me and John Wiegley were discussing a decent > > name for it, John suggested inv as in involution. E.g. > > > > inv reverse (take 10) > > inv reverse (dropWhile isDigit) > > trim = inv reverse (dropWhile isSpace) . dropWhile isSpace > > > > That seems to be the only use-case I've ever come across. > > And it's here only because reverse^-1 ≡ reverse, is not it? > I only can see how f ∘ g ∘ f^-1 can be a pattern. > > > There's also this one: > > > > co f g = f g . g > > > > which means you can write > > > > trim = co (inv reverse) (dropWhile isSpace) > > > > but that's optimizing an ever rarer use-case. > > > -- > lelf > > > > _______________________________________________ > Haskell-Cafe mailing list > Haskell-Cafe@haskell.org > http://www.haskell.org/mailman/listinfo/haskell-cafe >
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe