小编atr*_*ers的帖子

Haskell 懒惰和 seq

我试图理解懒惰和seqHaskell:

  • 在(1)中,v在基本情况下的打印需要之前不进行评估是否正确v

  • 在(2)中,v'在每次递归调用之前评估是否正确,以便v在基本情况下不需要评估?如果没有,我如何实施这种严格的评估?

  • 我可以使用任何分析工具来为自己确认这两点吗?


main = do
  f [1, 2, 3, 4] 0
  f' [1, 2, 3, 4] 0

g x = 42 * x -- this could be whatever

-- 1. lazy
f [] v = print v -- base case
f (x:xs) v = f xs v'
  where v' = v + g x

-- 2. strict
f' [] v = print v -- base case
f' (x:xs) …
Run Code Online (Sandbox Code Playgroud)

haskell lazy-evaluation

4
推荐指数
1
解决办法
107
查看次数

标签 统计

haskell ×1

lazy-evaluation ×1