Moz*_*lah 5 computer-science haskell functional-programming category-theory
根据这篇关于haskell中指称语义的文章 所有类型都有底部,函数f:A-> B是严格的,如果它将类型A的底部映射到类型B的底部,那么它被称为非严格的其他类型.
(这让人联想到一个尖刻的类别,其中态射保留了基点).
为什么Haskell有非严格的函数,而标准ML没有?
Con*_*nal 12
每个带递归的编程语言都至少有一个非严格函数,通常采用conditional(if-then-else)的形式.否则,所有递归都表示底部(非终止).然而,作为非严格函数必不可少的是,大多数这些语言都不允许您定义自己的语言!有些语言通过提供宏来弥补这一限制 - 这是一种类似函数的机制,可以转换语法而不是值.
为什么Haskell有非严格的函数,而标准ML没有?
Haskell具有非严格的函数 - 通常是懒函数 - 因为它们是一个有用的编程特性.
它们改进了等式推理,使编写代码变得更容易,并且可以编写更多种类的程序.