[Haskell-cafe] gathering position information lazily using traverse