我最近在使用threepenny-gui时遇到了一个错误
,它通过将代码从do表示法中的<-
模式匹配更改为使用let表示法的模式匹配来解决。
在这两种形式的模式匹配之间进行更改时,我是否应该期望行为发生变化?
具体如下代码:
在 IO 单子中:
Just events <- Map.lookup elid <$> readMVar sElementEvents
改为:
mevents <- Map.lookup elid <$> readMVar sElementEvents
let Just events = mevents
这是为我解决问题的提交的链接: https ://github.com/Davorak/threepenny-gui/commit/fbf6cbe25875fafdc64f7a111ddebf485b45143b
其他平台详细信息:操作系统:10.8.5 ghc:7.6.3
编辑:添加了 IO monad 正在发生这种情况的事实