Потоковое рекурсивное снижение директории в Haskell

Я пытаюсь сделать рекурсивный спуск структуры каталогов с помощью Haskell. Я хотел бы получать дочерние каталоги и файлы только по мере необходимости (лениво).

Я написал следующий код, но когда я его запускаю, трассировка показывает, что все каталоги посещаются до первого файла:

module Main where

import Control.Monad ( forM, forM_, liftM )
import Debug.Trace ( trace )
import System.Directory ( doesDirectoryExist, getDirectoryContents )
import System.Environment ( getArgs )
import System.FilePath ( () )

-- From Real World Haskell, p. 214
getRecursiveContents :: FilePath -> IO [FilePath]
getRecursiveContents topPath = do
  names 

Ответы на вопрос(4)

Ваш ответ на вопрос