2011-10-14 14 views
8

के अंदर आईओ कैसे कर सकता हूं मेरे पास एक साधारण वाईएआई एप्लीकेशन (इस मामले में वार) है जो "हाय" के साथ सभी वेब अनुरोधों का जवाब देता है। मैं यह भी अनुरोध करता हूं कि जब भी अनुरोध संसाधित हो जाए तो सर्वर पर "हाय हाय" प्रदर्शित करना होगा। मैं अपने डब्ल्यूएआई प्रतिक्रिया हैंडलर के अंदर आईओ कैसे करूं?मैं वाईएआई (वार) एप्लिकेशन

{-# 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" 

उत्तर

13

एक WAI आवेदन के प्रकार है:: यहाँ अपने आवेदन है

type Application = Request -> Iteratee ByteString IO Response 

इसका मतलब यह है कि एक WAI आवेदन, IO पर एक Iteratee इकाई ट्रांसफार्मर में चलता है तो आप के लिए liftIO का उपयोग करना होगा नियमित IO क्रियाएं करें।

import Control.Monad.Trans 

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

मैंने बस कुछ घंटों को गुगल कर दिया और यह जवाब था। हास्केल में आने पर इस तरह के विषयों के बारे में जानने के लिए कहां जाना चाहिए? – Victor

संबंधित मुद्दे