我正在尝试检查leap年,即“可以被400整除或可以被4整除但不能被100整除的年份”。在实际的leap年中,删除其中一个条件仍未返回真。元组中只有z值计入可除性,但这些条件对于实际的leap年永远不会返回True值。
checkLeap :: (Int, Int, Int) -> Bool
checkLeap (x,y,z)
| z == 400 `mod` 1 = True
| z == 4 `mod` 1 && z /= 100 `mod` 1 = True
| otherwise = False
答案 0 :(得分:4)
mod
在可以被整除时为0,并且在Haskell中也不能一路走到尽头。尝试以下方法:
checkLeap :: (Int, Int, Int) -> Bool
checkLeap (x,y,z)
| z `mod` 400 == 0 = True
| z `mod` 4 == 0 && z `mod` 100 /= 0 = True
| otherwise = False