我有一个元组列表,我需要返回一个[Int]
,所有的位置都可以被2分割。
type A = [(Int, Int, Int, Int)]
func :: A -> [Int]
func tuples = [a | (a, b, c, d) <- tuples, map a `mod` 2 == 0]
func [(244,244,244,244),(244,244,244,244),(244,244,244,244)]
输出
[244,244,244]
我有当前的代码,但问题是这只是检查...的位置但是我需要所有 a,b,c,d ?
答案 0 :(得分:3)
type A = (Int, Int, Int, Int)
func :: [A] -> [Int]
func t = [a | (a, b, c, d) <- t, all even [a,b,c,d]]
仅当给定的所有内容都满足谓词时,all
函数才返回true。我已将元组捆绑到列表中并检查谓词。
答案 1 :(得分:2)
为b
,c
和d
添加更多警卫:
a `divides` b = b `mod` a == 0
func tuples = [a | (a, b, c, d) <- tuples, all (divides 2) [a,b,c,d]]