Representing fold (sequential accumulation) as map composed with a reduce over a monoid, non-trivially and efficiently. This is a bedrock of parallel programming: however, although the general principle is known, applying it to concrete problems requires ingenuity