for inner_duplicate, I prefer this way.
inner_duplicate ws = zip ws (drop 1 ws)
inner_duplicate ws = zip ws (drop 1 ws)
That is really nice! I hadn't thought of using a zip to do this, but now that you show it to me I can see it should have been obvious.
I'll incorporate that into the notes when I write them up. Thanks!