2011-10-14 35 views
8

Basit bir WAI uygulamasına (bu örnekte Warp) sahip olduğum tüm web isteklerine "Merhaba" ile yanıt vereceğim. Ayrıca bir istek her işlendiğinde sunucuya "Selam Merhaba" u göstermesini istiyorum. IO'yu WAI yanıt işleyicimin içinde nasıl uygularım?Bir WAI (Çözgü) Uygulamasında IO nasıl gerçekleştirilir?

type Application = Request -> Iteratee ByteString IO Response 

Bu kadar liftIO kullanmak gerekecektir böylece bir WAI uygulaması, IO üzerinde Iteratee monad trafo çalışır anlamına gelir:

{-# LANGUAGE OverloadedStrings #-} 
import Network.Wai 
import Network.HTTP.Types (status200) 
import Network.Wai.Handler.Warp (run) 

main :: IO() 
main = do 
    putStrLn "http://localhost:3000/" 
    run 3000 app 

app :: Application 
app _ = return hello 

hello = responseLBS status200 [("Content-Type", "text/plain")] "Hi" 

cevap

13
bir WAI uygulamasının türüdür

: İşte benim uygulama var Düzenli IO eylemleri gerçekleştirin.

import Control.Monad.Trans 

app _ = do 
    liftIO $ putStrLn "Said hi" 
    return hello 
+1

Sadece Googling birkaç saat boşa ve bu cevap oldu. Haskell'e girerken böyle konular hakkında bir şeyler öğrenmemiz gereken bir şey var mı? – Victor

İlgili konular