具有多个条件的haskell if-else语句

具有多个条件的haskell if-else语句,haskell,Haskell,目标是编写一个函数,如果给定一个介于1和12之间的整数,则该函数的计算结果为相关月份的名称(1->1月,等等),否则它的计算结果可能为“不正确的月数”。 这是我的代码: list = ["Jan","Feb","Mar","April", "May", "Jun","Jul","Aug","Sep","Oct","Nov","Dec"] month x = if x<13 && x>0 then x = list !! (x-1)

目标是编写一个函数,如果给定一个介于1和12之间的整数,则该函数的计算结果为相关月份的名称(1->1月,等等),否则它的计算结果可能为“不正确的月数”。 这是我的代码:

list = ["Jan","Feb","Mar","April", "May", "Jun","Jul","Aug","Sep","Oct","Nov","Dec"]
month x = if x<13 && x>0
          then x = list !! (x-1)
          else "Not a month"
list=[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”]
x月=如果x0
那么x=列表!!(x-1)
否则“不是一个月”
这是错误消息:输入“=”时出现解析错误


非常感谢您的帮助

只需删除
x=
。(你为什么写这个?)

list=[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”]
x月=如果x0
然后列出!!(x-1)
否则“不是一个月”
那么你写:

month x = if x0 then x = list !! (x-1) else "Not a month" 应该有用

在我看来,写这篇文章更优雅的方式是使用警卫:

month x | x > 0 && x < 13 = list !! (x-1)
        | otherwise = "not a month"
month x | x>0&&x<13=列表!!(x-1)
|否则=“不是一个月”

使用警卫是这里的最佳策略:

month x | x > 0 && x < 13      = list !! (x - 1)
        |otherwise             = "Error"

使用
Maybe
允许您在出现
情况时返回标准值(
无任何内容)。

您也可以这样编写:

month = ["Jan","Feb","Mar","April", "May", "Jun","Jul","Aug","Sep","Oct","Nov","Dec"]
getMonth k = lookup k $ zip [1..] month

@YassineBotabia:将其更改为
|
实际上会改变语义并产生错误。此外,错误不是第一行的
x=
,而是第二行的。我在输入后不久意识到。是的,非常感谢。这是我的错误。你是对的,我刚开始函数式编程。非常感谢你的帮助。谢谢你,芭芭拉,你的评论非常有用。
这里绝对应该使用String
,因为
“不是一个月”
实际上不是一个月。
month x | x > 0 && x < 13      = list !! (x - 1)
        |otherwise             = "Error"
mylist = ["Jan","Feb","Mar","April", "May", "Jun","Jul","Aug","Sep","Oct","Nov","Dec"]

exampleFunc :: [String] -> Int -> Maybe String
exampleFunc li int
   | int > 0 && int < 13    = Just (li !! (int - 1))
   | otherwise              = Nothing
month = ["Jan","Feb","Mar","April", "May", "Jun","Jul","Aug","Sep","Oct","Nov","Dec"]
getMonth k = lookup k $ zip [1..] month