使用Haskell Handles时,我感到有点不安全。具体而言,我正在寻找两个功能(也许它们已经存在,如果是这种情况,请原谅我的无知)。
- 当我获取一个句柄(例如通过
Network.accept
返回的句柄),该句柄既可读又可写时,我希望将它们转换为一对只读和只写句柄,以便向只读句柄写入内容会出现类型检查错误,反之亦然。(也许可以使用幻影类型并围绕IO函数进行包装来实现此目的?) - 在并发设置中,我发现多个线程可以写入同一个句柄,这会导致非常严重的后果。如何通过类型系统(如果可能)防止这种情况或者至少在运行时通过抛出异常被通知到这种情况?
任何想法都受欢迎。