2014-09-23 156 views
1

语境:

do state1 <- act state 
    dispatch $! state1 

$!做些什么?

E.g.为什么这里不只是dispatch state1

+7

你好邻居,你听说过关于我们的领主和救世主[Hoogle](http://www.haskell.org/hoogle/?hoogle=%24%21)的好消息吗? – 2014-09-23 05:57:13

回答

6

$!严格应用,从dispatch state1所不同的是state1保证要被评估,而不只是保持为懒惰形实转换。它被定义为

f $! x = x `seq` f x 

以这种方式强制进行评估对于效率问题(例如防止内存泄漏)非常重要。