簡體   English   中英

如何在 ScottyM 中運行 IO

[英]How to run IO inside ScottyM

我正在使用Scotty編寫一個小的 web 應用程序。 我需要在ScottyM類型中運行IO

有幾個困難:

首先,我不能自動從MonadIO派生類型同義詞以運行liftIO

type ScottyM = ScottyT Text IO 

其次,我不知道如何從 MonadIO 派生MonadIO

newtype ScottyT e m a

Constructors
ScottyT  

    runS :: State (ScottyState e m) a 

我有哪些選擇?

謝謝

您是否有必要在ScottyM而不是在開始之前運行您的scotty

{-# LANGUAGE OverloadedStrings #-}

import Web.Scotty

import Data.Monoid (mconcat)

main = do
    print "Hello world!" -- Or your IO action of choice
    scotty 3000 $
        get "/:word" $ do
            beam <- param "word"
        html $ mconcat ["<h1>Scotty, ", beam, " me up!</h1>"]

另一種選擇是濫用notFoundnext在 ActionM 中運行ActionM ,這更直接:

{-# LANGUAGE OverloadedStrings #-}

import Web.Scotty

import Control.Monad.Trans.Class (lift)
import Data.Monoid (mconcat)

main = scotty 3000 $ do
    notFound $ do
        lift $ print "Hello world!" -- Or some other IO action
        next
    get "/:word" $ do
        beam <- param "word"
        html $ mconcat ["<h1>Scotty, ", beam, " me up!</h1>"]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM