gpt4 book ai didi

haskell - 通过具有不同数量参数的方程式定义函数

转载 作者:行者123 更新时间:2023-12-02 10:57:43 24 4
gpt4 key购买 nike

我今天注意到这样的定义

safeDivide x 0 = x
safeDivide = (/)

不可能。我很好奇这背后的(好的)原因是什么。必须有一个非常好的(毕竟是Haskell :)。

注意:我不是在寻找上述代码的替代实现的建议,这只是一个简单的例子来说明我的观点。

最佳答案

我认为这主要是为了保持一致性,以便可以以相同的方式读取所有子句。也就是说,每个RHS在功能类型中都位于同一位置。我认为,如果您也允许这样做,将会掩盖很多愚蠢的错误。

还有一个语义上的怪癖:说编译器填充了这些子句,使其具有与其他子句相同数量的模式;即您的示例将成为

safeDivide x 0 = x
safeDivide x y = (/) x y

现在考虑第二行是否改为 safeDivide = undefined;在没有前面的子句的情况下, safeDivide将为 ,但是由于此处执行的eta扩展,因此它是 \x y -> if y == 0 then x else ⊥,因此 safeDivide = undefined实际上并未将 safeDivide定义为 !国际海事组织,这似乎足以使人们有理由禁止此类条款。

关于haskell - 通过具有不同数量参数的方程式定义函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56261282/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com