什么是$!哈斯克尔的刻薄/做

  • 本文关键字:哈斯克 haskell syntax
  • 更新时间 :
  • 英文 :


上下文:

do state1 <- act state
   dispatch $! state1

$!做什么?

例如,为什么这里不仅仅是dispatch state1

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

f $! x  = x `seq` f x

以这种方式强制评估对于效率问题可能很重要,例如防止内存泄漏。