我在使用TextIO结构时遇到了一个问题,因为每次输入都要等待换行符和缓冲区满了……我如何与BinIO和stdIn一起工作来解决这个问题?
任何有帮助的输入都是感激的。
顺便说一句:我使用的是MLTton,所以没有什么比通常的标准库。
作为最后的手段,您可以自己用C编写它,然后使用外部函数接口从SML调用它。您可以在这里找到有关MLton FFI的更多信息:http://mlton.org/ForeignFunctionInterface
与我在使用TextIO结构时遇到了一个问题,因为每个输入都等待换行字符并且缓冲区已满…我如何与BinIO和stdIn一起工作来解决这个问题?
TextIO
一样, BinIO
也实现了缓冲的 I/O。(两者都实现了IMPERATIVE_IO
签名。)对于无缓冲的 I/O,您需要在抽象上"下降"一个级别,并使用PRIMITIVE_IO
或POSIX_IO
的实现。
具体来说,Posix.IO.readVec
允许您从文件描述符中无缓冲地读取。(在标准输入的情况下,文件描述符为Posix.FileSys.stdin
。)
Posix.IO
将绕过MLton提供的行缓冲功能,但是如果您还需要绕过控制台的行缓冲,那么您可能需要使用特殊的C库(特定于您的操作系统),以及Matt在他的回答中提到的外部函数接口。