我一直在寻找了一段时间了,并没有发现我的问题的任何答案。 我试图编写一个函数,根据是否在一年内返回特定月份的日期。我以前已经定义了函数“lapyear”。我的问题是如何在另一个If条件中创建If条件?哈斯克尔多个条件组合
谢谢你很多关于你的答案:)
lapyear:: Int->Bool
lapyear a
|((rem)a 400)==0 = True
|((rem)a 100)==0 = False
|((rem)a 4)==0 = True
|otherwise = False
type Mes = Int
type Anyo = Int
type Dias= Int
daysAmonth:: Mes->Anyo->Dias
daysAmonth mes anyo
if lapyear anyo then do
|or[mes==01,mes==03,mes==05,mes==07,mes==08,mes==10,mes==12] = 31
|mes==02 = 29
|otherwise = 30
else
|or[mes==01,mes==03,mes==05,mes==07,mes==08,mes==10,mes==12] = 31
|mes==02 = 28
|otherwise = 30
'如果那么如果然后X1 X2其他别的x3'?或者你可能有兴趣在的['MultiWayIf'(https://downloads.haskell.org/~ghc/7.6.1/docs/html/users_guide/syntax-extns.html#multi-way-if)扩展GHC。 –
Bakuriu
无论如何,代码似乎是错误的。你有'mes == [01,03,..]'然后'mes == 02'。但是列表不太可能是'Num'实例,所以这可能会引发类型错误。 – Bakuriu
我想程序首先检查lapyear anyo的条件,取决于对去其他三个条件 – Felix