Haskell ハンドルを使用するとき、少し不安を感じました。つまり、私は 2 つの機能を探しています (既に存在している可能性があります。その場合は、私の無知をお許しください)。
- 読み取りと書き込みの両方が可能なハンドル (たとえば、 によって返される) を取得したら、それらを読み取り専用ハンドルと書き込み専用
Network.accept
ハンドルのペアに変換して、 読み取り専用ハンドルへの書き込みが行われないようにしたいと考えています。型チェックとその逆。(おそらく、ファントム型とラップアラウンド IO 関数を使用してこれを達成できますか?) - 並行設定では、複数のスレッドが同じハンドルに書き込む可能性があることがわかりました。これは、非常に厄介な結果を引き起こします。型システムを介してそれを防ぐにはどうすればよいでしょうか (可能であれば)、少なくとも実行時にスローされた例外を介してそのようなケースの通知を受け取るにはどうすればよいでしょうか?
どんなアイデアでも大歓迎です。