您的位置:首页 > 其它

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

2012-05-28 00:45 190 查看
2007-04-05 旧作。原载:http://blog.csdn.net/st_monad/article/details/1553561

在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输出两遍之类的例子,没有发现类似的功能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐