我们如何正式地说一个函数在参数中是非严格的?
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)
,这意味着它将评估第一个参数,然后是第二个或第三个参数。这些是简单的严格性分析器会得出的那种严格性属性。 (而简单的似乎是唯一值得的。)
如果
我们说一个函数在它的参数中是严格的f ⊥ = ⊥
但是我们怎么说一个函数在它的参数中是非严格的呢?如果
我们可以说一个函数是非严格的吗f ⊥ ≠ ⊥
?
这如何扩展到许多参数的函数,我们可能会或可能不会根据其他参数的值评估一个参数?
我是在使用 Haddock 文档更好地记录 Haskell 函数的严格属性的背景下提出这个问题的。
没有用于表达复杂严格属性的标准符号。它也不只是严格那么简单,因为对于数据结构,您可能需要准确说明评估了多少。
也就是说,对于像
这样的简单函数cond c t e = if c then t else e
你可以想象说严格性是 1 & (2 | 3)
,这意味着它将评估第一个参数,然后是第二个或第三个参数。这些是简单的严格性分析器会得出的那种严格性属性。 (而简单的似乎是唯一值得的。)