
henning thielmann writes:
movingWindow n xs = take (length xs - n +1) $ map (take n) $ tails xs
or more efficient using utility-ht package:
movingWindow n xs = Data.List.Match.take (drop (n-1) xs) $ map (take n) $ tails xs
Oh, very nice. I was a little frustrated writing the recursion explicitly. I guess you could also write movingWindow n xs = zipWith const (map (take n) $ tails xs) $ drop (n-1) xs Hmm, maybe this is obvious, if Data.List.Match.take == zipWith (flip const) (I've never used it)
I'm not sure. You are safer and more efficient when you restrict to pairs. Since I often need the function, I defined:
http://hackage.haskell.org/packages/archive/utility-ht/0.0.4/d oc/html/Data-List-HT.html#v%3AmapAdjacent
Then diff = mapAdjacent subtract
Yes, I agree if you know you'll be using a binary operator, and not a more general n-ary function. Chad