|
I might be completely missing your point (my apologies if i am). applicative is for specific elements of the structure. It's totally reasonable to want access to nearby values, but that requires being a little bit tricky. You could do something like a window of averages windows = map (take 5) tails $ [1,2,3,4,5,6]
and then do your fmap across that fmap sum windows
For access to prior values, you need something that looks a lot more like a fold. In that kind of case, i'd point at traversable. mapAccumL (\val accumulator -> val + accumulator) 0 [1,2,3,4,5]
which would gather up the sums, [1, 3, 6, 10, 15]of course, accumulator can be as fancy as you want, hashmap, set, tree, or whatever. If you can formulate a dynamic programming solution, there's generally a way to stuff that into traversable. This is sort of off the top of my head and my haskell is a bit rusty, so this probably won't compile. But i think it captures the essence. |