2
我正在使用scalaz 6.0和scala。我使用迭代從輸入流中讀取。來自標準IO的Iteratee輸入
這裏是我簡單的叫做simple.txt的文件。
這
是
測試
我iteratee將建立一個IO單子打印線
def printLines: IterV[String, IO[Unit]] = {
def step(currentIO: IO[Unit])(input: Input[String]): IterV[String, IO[Unit]] =
input match {
case El(x) => Cont(
step(
currentIO.flatMap(_ => putStrLn(x))
)
)
case IterV.Empty() => Cont(step(currentIO))
case EOF() => Done(currentIO, EOF[String])
}
Cont(step(io()))
}
當我使用enumeratorM
getFileLines(new File(".../simple.txt"))(printLines).flatMap(_.run).unsafePerformIO
我檢索正確的輸出。
當我嘗試使用
getLines(printLines).flatMap(_.run).unsafePerformIO
我只得到「這」回控制檯。 getLines使用標準輸入流。我已經爲iteratee添加了調試語句,並且getLines似乎在第一行後發送EOF(),但我無法解決它。