我正在尝试在我的程序中使用“何时”功能,因为如果某事是真的,我想执行一个动作,而不是如果它不是真的。我也可以通过使用 Maybe monad 来完成同样的事情,但这会使我的程序的其余部分变得混乱。
问题是,当期望返回类型为 IO() 但我想让它(或我自己的版本)适用于 IO(Response ByteString)
到目前为止,这是我的功能代码:
mayNotifyDs :: Bool -> String -> ByteString -> IO (Response ByteString)
mayNotifyDs hasRel specName details =
when hasRel (post addr ("dummy" := details))
where addr = "http://127.0.0.1:8082/dummydir/" ++ specName
编辑:“打印”潜入我最初发布的代码中,这是我尝试过的东西,我已经删除了它。我可以使用 print,但是我还需要使用 foreign.marshall 中的 unsafeLocalState,这是不可取的吗?在这种情况下,代码将变得相同,但使用 when hasRel (print $ unsafeLocalState (post addr ("dummy" := details)))