我们如何在一个论证中正式说一个函数是非严格的?

时间:2015-01-07 15:32:38

标签: haskell

我们说如果

,函数的参数是严格的
f ⊥ = ⊥

但是我们怎么说一个函数在其参数中是非严格的?如果

,我们可以说函数是非严格的吗?
f ⊥ ≠ ⊥

如何扩展到许多参数的函数,我们可能会也可能不会根据其他参数的值来评估参数?

我在使用Haddock文档更好地记录Haskell函数的严格性属性的上下文中提出这个问题。

1 个答案:

答案 0 :(得分:12)

表达复杂的严格属性没有标准符号。它也不仅仅是严格的简单,因为对于数据结构,您可能需要确切地说出要评估的内容。

那说,对于像

这样的简单函数
cond c t e = if c then t else e

你可以想象说严格性是1 & (2 | 3),意味着它将评估第一个参数,以及第二个或第三个参数。这些是严格的属性,简单的严格性分析器将提出。 (简单的似乎是唯一值得的。)