我正在尝试在haskell中使用警卫进行分类

分类 n:根据以下模式返回基于数字等级的字母等级:

  • 如果 n ? 90,返回'A'
  • 如果 89 ? ? 70,返回'B'
  • 如果 69 ? ? 50,返回'C'
  • 否则,返回“D”。

这是我的 Haskell 代码:

classify n
       | n => 90 = 'A'
       | 89 <= n <= 70 = 'B'
       | 69 <= n <= 50 = 'C'
       | otherwise = 'D' 

但它不断给我错误

回答

对于大于或等于,>=使用的是,不是=>,此外,您不能像在 Python 中那样链接条件,因此您应该使用89 >= n && n >= 70

classify n
    | n >= 90 = 'A'
    | 89 >= n && n >= 70 = 'B'
    | 69 >= n && n >= 50 = 'C'
    | otherwise = 'D' 

您可以将表达式简化为:

classify n
    | n >= 90 = 'A'
    | n >= 70 = 'B'
    | n >= 50 = 'C'
    | otherwise = 'D' 

这适用于整数,因为守卫n >= 90会为大于或等于 90 的所有值触发。这意味着不会为下一个守卫评估此类值,其他守卫只会评估小于或等于 89 的整数。


以上是我正在尝试在haskell中使用警卫进行分类的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>