При использовании Haskell Handles я чувствовал себя немного небезопасно. А именно, я ищу две функции (возможно, они уже есть, и в этом случае, пожалуйста, простите мое невежество).
- Когда я получил дескриптор (например, возвращен
Network.accept
), который читается и записывается, я хочу преобразовать их в пару только для чтения и только для записи, так что запись в режим только для чтения дескриптор не будет вводить проверку и наоборот. (Возможно, можно достичь это использование типов phantom и обертывания вокруг функций ввода-вывода?) - В параллельной настройке я обнаружил, что для нескольких потоков можно писать один и тот же дескриптор, что приводит к довольно неприятным последствиям. Как можно предотвратить это через систему типов (если возможно) или, по крайней мере, получить уведомление о таком случае через исключение броска во время выполнения?
Любая идея приветствуется.