具有多个条件的haskell if-else语句
目标是编写一个函数,如果给定一个介于1和12之间的整数,则该函数的计算结果为相关月份的名称(1->1月,等等),否则它的计算结果可能为“不正确的月数”。 这是我的代码:具有多个条件的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)
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