<div dir="ltr"><div dir="ltr"><div dir="ltr">Hello,<br><div><br></div><div>I feel like I need to go back to basics, so I've made a toy problem that takes a list of Ints, say [10, 20, 30, 40, 50, 60] and, in theory, iterates through the list in successive pairs i.e. [10, 20], [20, 30], [30, 40], [40, 50], [50, 60] and looks for a specific pair set, say 30, 40, and accumulates the number of times that pair appears in the list (for example purpose, there are no repeats, but assuming there were....).  What I've done is the following: </div><div><br></div><div><div>---take starting at position 2, in increments of 2 with overlap allowed</div><div>takeAtTwo :: [Int] -> Int -> [Int]</div><div>takeAtTwo list position = take (2 + position) list</div><div><br></div><div>---expects range of 0 to length list - 2</div><div>grabTwo :: [Int] -> Int -> [Int]</div><div>grabTwo list position = drop position (takeAtTwo list position)</div></div><div><br></div><div><div>-- and this does NOT work, half-pseudocode</div><div>--- pass in a pair of Int, say [30, 40] and sum up the number of appearances</div><div>numPair list = foldr (\pair acc -> if grabTwo list iterator == pair then acc + 1 else acc) 0</div></div><div><br></div><div>However, I am unsure how to get this to work properly with fold.  Suggestions? Thanks in advance and thank you for your time.</div></div></div></div>