语境:
do state1 <- act state
dispatch $! state1
Run Code Online (Sandbox Code Playgroud)
是什么$!
呢?
例如,为什么它不只是dispatch state1
在这里?
$!
是严格的应用中,从差dispatch state1
的是,state1
保证要被评估,而不只是保持为懒惰形实转换.它被定义为
f $! x = x `seq` f x
Run Code Online (Sandbox Code Playgroud)
以这种方式强制评估对于效率问题非常重要,例如防止内存泄漏.