什么是$!哈斯克尔的意思/做什么?

时间:2014-09-23 05:48:34

标签: haskell syntax

上下文:

do state1 <- act state
   dispatch $! state1

$!做了什么?

E.g。为什么它不仅仅是dispatch state1

1 个答案:

答案 0 :(得分:7)

$!严格应用程序,与dispatch state1的区别在于state1保证会被评估,而不仅仅是作为懒惰的thunk。它被定义为

f $! x  = x `seq` f x

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