小编Kiu*_*hnm的帖子

哈斯克尔和懒惰

我刚刚开始学习Haskell,并且我被告知Haskell是懒惰的,即它在评估表达式时尽可能少地工作,但我不认为这是真的.

考虑一下:

und :: Bool -> Bool -> Bool
und False y = False
und y False = False

non_term x = non_term (x+1)
Run Code Online (Sandbox Code Playgroud)

und (non_term 1) False从不终止的评价,但很明显,结果如果是假的.

有没有一种方法可以正确实现und(即and德语)(不仅仅是部分如上),以便两者兼顾

und (non_term 1) False
Run Code Online (Sandbox Code Playgroud)

und False (non_term 1)
Run Code Online (Sandbox Code Playgroud)

返回False?

haskell termination lazy-evaluation

6
推荐指数
2
解决办法
316
查看次数

标签 统计

haskell ×1

lazy-evaluation ×1

termination ×1