Проблема запуска Warp, на WAI, в Windows

Я написал простое приложение Hello World для (Warp) на (Wai). Он отлично работает в Ubuntu Linux, как и более сложные приложения. Но я даже не могу запустить приложение Hello World в Windows. Я использую платформу Haskell (установочный файл 2012.2.0.0) в 32-разрядной версии Windows 7 Home Premium SP1.

Это код (который работает в Linux):

{-# LANGUAGE OverloadedStrings #-} 

import Network
import Network.Wai
import Network.HTTP.Types (status200)
import Network.Wai.Handler.Warp (run)
-------------------------------------------------------------------------------
application = \_-> return $ responseLBS status200 [("Content-Type", "text/plain")] 
                            "Hello World" 

main = withSocketsDo $ do run 3000 application

Это сообщения GHCI после загрузки кода и запуска (main):

Prelude> :l wai_hello_world.hs
[1 of 1] Compiling Main             ( wai_hello_world.hs, interpreted )
Ok, modules loaded: Main.
*Main> main
Loading package bytestring-0.9.2.1 ... linking ... done.
Loading package [ **edited**: blah blah blah - other packages - removed for readability]
Loading package warp-1.3.2 ... linking ... done.

После загрузки кода веб-сервер не работает.

Я думаю, что могу столкнуться с какой-то распространенной ошибкой - если да, пожалуйста, дайте мне знать

Заранее спасибо за все отзывы.

(Обновление: как отмечено в ответе ниже, эти ошибки связаны исключительно с действием Ctrl-C, убивающим среду выполнения, а не с неожиданным поведением Wai/Warp в вопросе.)

Если я нажимаю Ctrl-C несколько раз, чтобы всплыть, я получаю следующие сообщения:

NIenttweorrrku.pStoecdk.e
t.ace*Main> p: failed (No error)
user error (accept: can't perform accept on socket ((AF_INET,Stream,0)) in status Closed)
user error (accept: can't perform accept on socket ((AF_INET,Stream,0)) in status Closed)
*Main>
*Main> user error (accept: can't perform accept on socket ((AF_INE,:Sream,0)) in status Closed)
q
Leaving GHCi.

2 ответа

Решение

Вам, вероятно, нужно использовать withSocketsDo,

Это решило проблему (и я чувствую себя глупо):

  1. Разрушенный стек, деинсталлированный Haskell Platform 2012.2.0.0 для Windows.
  2. Установлена ​​последняя версия Haskell Platform 2012.4.0.0 для Windows.
  3. Установлен пакет / библиотеки (cabal install yesod-platform).
  4. Утвержден запрос брандмауэра Windows на GHC при запуске кода.
  5. Код теперь работает как положено. У меня сейчас нет проблем. Возможно, это был брандмауэр.:-S
Другие вопросы по тегам