[EMAIL PROTECTED] wrote: > > I want to propose the following function slide, which is like map, but > depends not on one value of > a list, but on several consecutive ones. > > slide :: ([a] -> b) -> [a] -> [b] > slide f [] = [] > slide f xs = f xs : slide f (tail xs)
The function is interesting from the theoretical side since it is an instance of *redecoration*. Written as slide :: [a] -> ([a] -> b) -> [b] , one sees a similarity with the monadic multiplication (or substitution, here for the case of lists) >>= :: [a] -> (a -> [b]) -> [b] . Indeed, slide is the multiplication operation of lists viewed as a *comonad* and hence the dual of ">>=". Read more in T Uustalu, V Vene. The dual of substitution is redecoration. In K Hammond, S Curtis, eds, Trends in Functional Programming 3, pp 99-110. Intellect, Bristol / Portland, OR, 2002. - .ps.gz, 46K (© Intellect) http://www.cs.ioc.ee/~tarmo/papers/sfp01-book.ps.gz , if you want to be bothered with categorical nonsence ;-) Cheers, Andreas -- Andreas Abel --<>-- What if Jesus is right? Theoretical Computer Science, University of Munich http://www.tcs.informatik.uni-muenchen.de/~abel/ _______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell