我有一个 IO Bool 函数,可以给我一些状态信息。我想根据此函数返回的值将“OK”或“KO”写入 .tpl 文件的拼接中。
所以我很高兴的是一种在 SnapletISplice 中提升 IO monad 的方法,这样我就可以将 statusSplice :: SnapletISplice App 与 ("splicename", statusSplice) 绑定,并从内部的 IO monad 计算值。
我很确定 SnapletISplice “是”一个 IO monad,应该存在这样的提升功能。但我无法弄清楚它是什么。
注意:我正在使用 snap 0.11。因此删除了一些功能(如liftHandle)。
简而言之,使用代码,我想做的是:
app = ...
addSplices splices
...
splices = [("spliceName", statusSplice)]
statusSplice :: SnapletISplice App
statusSplice = do
st <- lift $ computeStatus
if st then textSplice "ok" else textSplice "ko"