More familiar `scanl`; add `mapAccum`, `mapAccumM`