我一直在尋找了一段時間了,並沒有發現我的問題的任何答案。 我試圖編寫一個函數,根據是否在一年內返回特定月份的日期。我以前已經定義了函數「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