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

How do we formally say that a function is non-strict in an argument?

如果

我们说一个函数在它的参数中是严格的
f ⊥ = ⊥

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

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

?

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

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

没有用于表达复杂严格属性的标准符号。它也不只是严格那么简单,因为对于数据结构,您可能需要准确说明评估了多少。

也就是说,对于像

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

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