用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输出两遍之类的例子,没有发现类似的功能。
在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输出两遍之类的例子,没有发现类似的功能。
相关文章推荐
- 用haskell实现select的timeout(待解决)
- 一个JS图片放大镜,实现动态记录的图片放大,避免内存泄露,解决IE6下无法遮盖select控件问题
- 解决Firefox/Opera 不支持onselectstart事件实现不允许用户select
- 解决Firefox/Opera 不支持onselectstart事件实现不允许用户select
- 一个JS图片放大镜,实现动态记录的图片放大,避免内存泄露,解决IE6下无法遮盖select控件问题
- NSMutableURLRequest实现Post请求及其timeoutInterval不生效问题解决
- jquery实现的拖拽效果,解决拖动速度过快时的会卡现象,select的遮挡问题和透明效果
- [转]Linux 下给类tcp 通信模式的实现。select 函数
- js解决select下拉问题
- iOS10全新方法实现推送+deviceToken无法获取或无效的解决
- XSLT实现XML无极限树(精简版)[二] 解决没有递归出节点属性值总和的问题(JS实现)
- 哈希表的简单实现【链地址法解决冲突】
- JavaScript解决一个带验证的Form两个Submit事件(一个页面保持不动【AJAX实现】,一个页面提交并跳转)的场景
- 《利用反射实现类的动态加载》调试出错的解决
- Mvvm KeyDown的实现以及TextBox绑定的属性不更新问题的解决
- .net调试程序时出现不会实现接口成员时解决办法
- 一步步重构容器实现Spring框架——解决容器对组件的“侵入式”管理的两种方案--主动查找和控制反转(九)
- 如何解决PHP无法实现多线程的问题
- ie中select挡住div的5种解决方法
- 在WSAASyncSelect模式中频繁收到FD_CLOSE事件的解决方法