[Haskell-cafe] lazily traversing a foreign data structure