2015-12-01 3 views
1

Существует много старой информации о сети относительно GHC с epoll/kqueue. Например, код на Simple Servers wiki page больше не компилируется.Как использовать версию GOL/Haskell с поддержкой epoll/kqueue для сетевых подключений?

Может ли кто-нибудь предоставить базовый пример того, как использовать эту функцию с современной версией GHC для сборки, например. TCP-сервер, который просто отвечает «Hello» на подключении?

+0

Можете ли вы описать, что означает «не компилируется больше», и включить код, который вы пытаетесь скомпилировать непосредственно в своем вопросе здесь? (В качестве доказательства того, что я не просто пытаюсь применить произвольные правила: я застрял код из раздела «Базовый параллельный сервер» в файле, и он отлично компилировался на моей машине. Дальнейшие подробности о том, что вы пытаетесь действительно нужны.) –

+0

@ DanielWagner Hi Daniel. Конечно. Если вы посмотрите на последний пример, который фактически использует «epoll», он использует функцию «loop», но это даже не в этом примере. Я получаю сообщение об ошибке 'app3/Main.hs: 14: 5: Не в области:« loop ». Это после того, как я изменил 'System.Event' на' GHC.Event', который нигде не отмечен. – Ana

+1

Страница wiki устарела. Менеджер IO GHC использует epoll/kqueue под капотом без каких-либо специальных усилий программиста (и [на протяжении пяти лет] (https://ghc.haskell.org/trac/ghc/ticket/635)). Так что просто напишите наивную версию с резьбой в верхней части страницы. –

ответ

2

Менеджер IO GHC использует epoll/kqueue под капотом без специального усилия программиста. Просто напишите наивную программу с резьбой, которая помещает каждый параллельный блокирующий вызов ввода-вывода в отдельный поток - и GHC будет следить за тем, чтобы он работал так, как вы хотите.