我正在尝试将 Haskell 与具有 read-eval-print 循环的命令行程序连接。我想将一些文本放入输入句柄中,然后从输出句柄中读取,直到找到提示(然后重复)。读取应该阻塞,直到找到提示,但不再阻塞。与其编写我自己的小型状态机,每次读取一个字符直到它构造一个提示,不如使用 Parsec 或 Attoparsec。(一个问题是提示会随着时间而变化,所以我不能只检查恒定的字符串。)
从输出句柄中读取适当数量的数据并将其提供给解析器的最佳方法是什么?我很困惑,因为大多数句柄读取原语都要求我事先决定要读取多少数据。但应该由解析器决定何时停止。