我不小心删除了我的帖子,但是为了澄清问题,我正在重新发布这个问题。
如果我有一个函数:
const x = 1
如果我问 Haskell:
const (1/0)
它会返回 1
,因为惰性求值实际上并没有计算 1/0
是什么,对吧?它并不需要这样做。
我不小心删除了我的帖子,但是为了澄清问题,我正在重新发布这个问题。
如果我有一个函数:
const x = 1
如果我问 Haskell:
const (1/0)
它会返回 1
,因为惰性求值实际上并没有计算 1/0
是什么,对吧?它并不需要这样做。
是的,没错。就像你定义的那样,const
在被评估时总是会产生1,无论参数是什么。由于参数与结果无关,因此不会对结果进行评估。因此,任何可能由于评估参数而导致的错误或非终止都不会发生。
1/0
实际上不会抛出异常,它只会返回一个特殊的Double
值。但是,如果您将其更改为会抛出异常的内容(例如error "die"
),您仍将得到1
作为答案。 - MathematicalOrchid