Haskell Scotty post类型不允许使用效果
与:Haskell Scotty post类型不允许使用效果,haskell,functional-programming,scotty,Haskell,Functional Programming,Scotty,与: mailHandler=do nameWeb.Scotty.Internal.Types.ActionT.Text IO()是IO上的monad转换器。它们通常实现MonadIO类,因此您可以使用liftIO函数(从Control.Monad.IO.class,如果尚未导入)将IO操作“提升”到它们中: Couldn't match type `IO' with `Web.Scotty.Internal.Types.ActionT T.Text
mailHandler=do
nameWeb.Scotty.Internal.Types.ActionT.Text IO()
是IO
上的monad转换器。它们通常实现MonadIO
类,因此您可以使用liftIO
函数(从Control.Monad.IO.class
,如果尚未导入)将IO
操作“提升”到它们中:
Couldn't match type `IO'
with `Web.Scotty.Internal.Types.ActionT T.Text IO'
Expected type: Web.Scotty.Internal.Types.ActionT T.Text IO ()
Actual type: IO ()
In a stmt of a 'do' block: renderSendMail $ forwardMail name email
In the expression:
do { name <- param "name";
email <- param "email";
renderSendMail $ forwardMail name email }
In an equation for `mailHandler':
mailHandler
= do { name <- param "name";
email <- param "email";
renderSendMail $ forwardMail name email }
Failed to install server-0.0.1
cabal: Error: some packages failed to install:
server-0.0.1 failed during the building phase. The exception was:
ExitFailure 1
如果您不介意,请告诉我要安装以获取Control.Monad.IO.Class
的cabal包的名称。如果你能解释整个monad transformer的概念,那就更好了好吧,我安装了transformers
,事情又恢复了活力,但我还是希望能解释一下这个概念。@Freshyeballscotty
似乎已经依赖于transformers
,所以我怀疑这是多余的?(因为scotty定义了一个变压器本身,所以它有点像。)@Freshyeball Monad transformers是一个有点大的主题,所以我想我会在这里继续解释它,但请参见例如…@Freshyeball这篇文章:
Couldn't match type `IO'
with `Web.Scotty.Internal.Types.ActionT T.Text IO'
Expected type: Web.Scotty.Internal.Types.ActionT T.Text IO ()
Actual type: IO ()
In a stmt of a 'do' block: renderSendMail $ forwardMail name email
In the expression:
do { name <- param "name";
email <- param "email";
renderSendMail $ forwardMail name email }
In an equation for `mailHandler':
mailHandler
= do { name <- param "name";
email <- param "email";
renderSendMail $ forwardMail name email }
Failed to install server-0.0.1
cabal: Error: some packages failed to install:
server-0.0.1 failed during the building phase. The exception was:
ExitFailure 1
liftIO . renderSendMail $ forwardMail name email