gpt4 book ai didi

function - Haskell 模式匹配在负数上失败

转载 作者:行者123 更新时间:2023-12-03 13:22:09 25 4
gpt4 key购买 nike

Haskell 编译器在以下函数上抛出错误:

balancedMax :: Int -> Int -> Int
balancedMax -1 _ = -1
balancedMax _ -1 = -1
balancedMax a b = max a b

翻转标志可以解决问题:
balancedMax :: Int -> Int -> Int
balancedMax 1 _ = -1
balancedMax _ 1 = -1
balancedMax a b = max a b

为什么模式匹配在否定上失败,什么是干净的解决方法?

最佳答案

它失败是因为它认为您正在尝试重新定义减号运算符,因为 f -1 = ...被解析为 f - 1 = ... .

要解决此问题,您只需添加括号:

balancedMax :: Int -> Int -> Int
balancedMax (-1) _ = -1
balancedMax _ (-1) = -1
balancedMax a b = max a b

同样的事情也发生在表达式中。调用 balancedMax使用否定文字,您还需要括号。

关于function - Haskell 模式匹配在负数上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16976543/

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