在 Scotty do 块中添加打印
Add print in Scotty do block
我是 Haskell 的新手,如果问题很愚蠢,请提前致歉,但我无法在 google 中找到解决方案。
假设我有这个程序使用 Scotty 网络框架:
responseUserByName :: ActionM ()
responseUserByName = do name <- param "name"
user <- liftAndCatchIO $ getUserByUserName name
json user
我想添加一个日志,因为它在运行时失败了,我不知道为什么。所以我的想法是在 do 块中添加一些打印来检查值。
但是由于 do
块必须 return 一个 ActionM
我无法打印并且 return 一个 IO
。好吧,至少我不知道怎么做。
此致
我猜 ActionM
来自 Scotty。在这种情况下,您可以简单地使用 liftIO
提升 IO 操作,就像您已经使用 liftAndCatchIO
:
一样
responseUserByName :: ActionM ()
responseUserByName =
do name <- param "name"
user <- liftAndCatchIO $ getUserByUserName name
liftIO $ putStrLn "this is a log message"
json user
我是 Haskell 的新手,如果问题很愚蠢,请提前致歉,但我无法在 google 中找到解决方案。
假设我有这个程序使用 Scotty 网络框架:
responseUserByName :: ActionM ()
responseUserByName = do name <- param "name"
user <- liftAndCatchIO $ getUserByUserName name
json user
我想添加一个日志,因为它在运行时失败了,我不知道为什么。所以我的想法是在 do 块中添加一些打印来检查值。
但是由于 do
块必须 return 一个 ActionM
我无法打印并且 return 一个 IO
。好吧,至少我不知道怎么做。
此致
我猜 ActionM
来自 Scotty。在这种情况下,您可以简单地使用 liftIO
提升 IO 操作,就像您已经使用 liftAndCatchIO
:
responseUserByName :: ActionM ()
responseUserByName =
do name <- param "name"
user <- liftAndCatchIO $ getUserByUserName name
liftIO $ putStrLn "this is a log message"
json user