簡體   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