我正在尝试将Haskell与具有读取-求值-打印循环的命令行程序进行接口连接。我想把一些文本放到输入句柄中,然后从输出句柄中读取,直到找到提示符(然后重复)。读取应该阻塞,直到找到提示符,但时间不应过长。使用Parsec或Attoparsec很好,而不是编写自己的小状态机,每次只读取一个字符,直到构造出提示符为止(其中一个问题是提示符会随着时间而改变,所以我不能只检查一串恒定的字符)。哪种方法最好读取适当量的数据并将其馈送给解析器?我感到困惑,因为大多数句柄读取基元要求我事先决定要读取多少数据。但应该由解析器决定何时停止。