gpt4 book ai didi

haskell - Haskell 中的错误函数

转载 作者:行者123 更新时间:2023-12-03 08:02:42 25 4
gpt4 key购买 nike

我有一个在haskell中成功编译的函数。

它看起来像这样:

suffix :: Int -> String
suffix i
| i==0 = "th"
| i==1 = "st"
| i==2 = "nd"
| i==3 = "rd"
| i>=4 || i<=9 = "th"
| i<0 = error "Must be positive integer" ----------NOT WORKING?
| otherwise = suffix(i `rem` 10)

我至少可以通过 i<0 的错误行来判断它是行不通的。 guard 。当我进入 GHCI 并在数字中添加“-”时: suffix -5如果我完全关闭此案例,我会收到相同的错误消息。

我希望它清楚地显示我的错误消息。希望有人能发现我的问题。谢谢!

最佳答案

基本的 Haskell 语法怪异。这是该语言中唯一类似的情况。
suffix -5suffix - 5(-) suffix 5 . -字符被视为中缀二元运算符,就像 haskell 中所有以标点符号命名的函数一样。也就是说,除非 - 之前的表达式中没有字符。 .做你想做的最简单的方法是使用 suffix (-5) .通过将其括在括号中,您在语法上使其成为一个独立的表达式,这意味着 - 之前没有字符。在表达式中。

但是,这会产生其自身的怪异之处,因为您不能创建一个运算符部分来从输入中减去一个值。 (-5)不是表示 \x -> x - 5 的部分,与该语言中的任何其他二元运算符不同。一元否定和二进制减法使用相同的符号是一种不幸的情况,因为这意味着在 Haskell 的语法中必须存在这样的极端情况。

关于haskell - Haskell 中的错误函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14845185/

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