gpt4 book ai didi

haskell - 为什么 Haskell 中函数的分段定义取决于它们指定的顺序?

转载 作者:行者123 更新时间:2023-12-04 14:35:12 24 4
gpt4 key购买 nike

作为初学者,我正在研究具有分段定义的函数示例。

pts 1 = 10
pts 2 = 6
pts x = x
上面的代码按我的预期工作。但是,当我尝试将顺序更改为
pts x = x
pts 1 = 10
pts 2 = 6
我收到警告

warning: [-Woverlapping-patterns] Pattern match is redundant


最后两条语句看起来会被编译器忽略。
我没有设法在谷歌上找到答案,如果能提供解释的链接,我将不胜感激。

最佳答案

在 Haskell 中,像这样的函数定义中的模式是从上到下检查的。所以你的第一个例子是一样的:

pts x =
if x == 1 then 10
else if x == 2 then 6
else x
你的第二个定义类似于:
pts x =
if True then x
else if x == 1 then 10
else if x == 2 then 6
else undefined
很明显,在第二个例子中,第一个分支总是被采用,其余的都是多余的。

关于haskell - 为什么 Haskell 中函数的分段定义取决于它们指定的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69336247/

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