【发布时间】:2013-01-10 15:47:54
【问题描述】:
根据denotational semantics in haskell上的这篇文章 所有类型都有底,一个函数 f:A->B 是 strict 如果它将 A 类型的底映射到 B 类型的底,则称为 non-strict 否则。
(这让人联想到态射保留基点的尖类)。
为什么 Haskell 有非严格函数,而标准 ML 没有?
【问题讨论】:
-
你是在问为什么懒惰是 Haskell 的一部分,或者为什么它是一般编程语言的一部分?
-
如果您特别询问 Haskell,它具有非严格功能,因为其他语言具有它们。 Haskell 的创建是为了统一现存惰性语言的特性。请参阅research.microsoft.com/en-us/um/people/simonpj/papers/… 的第 2.1 节。
-
@heatsink:一般是编程语言。我已经收集到非严格与懒惰有关,但不明白为什么。
-
我不认为“为什么 X 有 Y”或“为什么 X 没有 Y”对于这个网站来说是个好问题。为什么Java要以一个岛命名,为什么go语言团队觉得不需要异常,firefox不是多进程浏览器有什么问题?这些实际上不是 stackoverflow 应该涵盖的编程问题。
-
foldl 和 foldr 非常适合您提出问题。 “foldleft 可以根据 foldright 定义,但反之则不行,因为 foldleft 在列表参数的尾部是严格的,但 foldright 不是(即 fold_left 作用在底部给出底部)”
标签: haskell functional-programming computer-science category-theory