1 haskell
test4 :: [Int] -> Bool
test4 [] = False
test4 (x:xs)
| mod x 3 /= 0 = False
| otherwise = True
Run Code Online (Sandbox Code Playgroud)
我只是喜欢代码找到一个不能被三分的列表中的任何(不仅仅是第一个)数字,然后说False.
我刚开始学习Haskell.
如果遇到可被3整除的数字,则需要继续搜索列表.该otherwise子句需要递归调用该函数.
test4 :: [Int] -> Bool
test4 [] = True
test4 (x:xs)
| mod x 3 /= 0 = False
| otherwise = test4 xs
Run Code Online (Sandbox Code Playgroud)
但是我建议你尽量避免编写低级模式匹配和递归代码.Haskell是一门高级语言!用简单的英语,你希望你的函数测试列表中的所有元素是否可以被3整除.这就是all :: (a -> Bool) -> [a] -> Bool函数的用途:
test4 = all (\x -> x `mod` 3 == 0)
Run Code Online (Sandbox Code Playgroud)
我认为这个版本更清晰,更容易阅读,也更短.