用haskell实现select的timeout(待解决)

来源:互联网 发布:十大炒股软件排名 编辑:程序博客网 时间:2024/05/16 13:00

在ocaml.cn上看到有人问如何用haskell实现select的timeout,觉得这个比较实际的问题有点意思,记下来留待以后慢慢想。

原文在: http://ocaml.cn/node/296
输入参数是一些Handle,都是可读的,但不确定什么时候能读到数据(比如说它们都是pipe的一端在等待另一端的输入);函数的主要功能是—— 在这些Handle上等数据,对最先发现数据的Handle作hGetChar,并取消对其他Handle的等待,返回值为所取得的char;除此之外, 还有一个时间参数作为timeout,如果这段时间内任一handle上都没有输入的话,就取消全部action。如果用haskell的类型来表示的 话,这个函数的类型大概应该是float -> [Handle] -> Maybe char

这是个很常见的需求,实际上这就是传统意义上的select函数,但我不知道应该怎么写。>>=和return这些primitive都有,问题就是怎么将它们组合来实现这个功能。快速指南里的大都是什么输入一个char输出两遍之类的例子,没有发现类似的功能。


原创粉丝点击