标签: haskell syntax
上下文:
do state1 <- act state dispatch $! state1
$!做了什么?
$!
E.g。为什么它不仅仅是dispatch state1?
dispatch state1
答案 0 :(得分:7)
$!是严格应用程序,与dispatch state1的区别在于state1保证会被评估,而不仅仅是作为懒惰的thunk。它被定义为
state1
f $! x = x `seq` f x
以这种方式强制评估对于提高效率问题非常重要,例如防止内存泄漏。