繁体   English   中英

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

[英]I'm trying to classify using guards in haskell

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

  • 如果 n ≥ 90,则返回 'A'
  • 如果 89 ≤ n ≤ 70,则返回 'B'
  • 如果 69 ≤ n ≤ 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 的整数其他守卫。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM