List 元组列表中的问题

List 元组列表中的问题,list,haskell,list-comprehension,tuples,List,Haskell,List Comprehension,Tuples,我有一个元组列表,我需要返回一个[Int],所有位置都可以除以2 type A = [(Int, Int, Int, Int)] func :: A -> [Int] func tuples = [a | (a, b, c, d) <- tuples, map a `mod` 2 == 0] 输出 我有当前代码,但问题是这只是检查a的位置。。但我要求所有a、b、c、d?只需为b、c和d添加一些防护: 仅当给定的所有内容都满足谓词时,all函数才返回true。我已经将元组绑定到一

我有一个元组列表,我需要返回一个[Int],所有位置都可以除以2

type A = [(Int, Int, Int, Int)]

func :: A -> [Int]
func tuples =  [a | (a, b, c, d) <- tuples, map a `mod` 2 == 0]
输出


我有当前代码,但问题是这只是检查a的位置。。但我要求所有a、b、c、d?只需为b、c和d添加一些防护:


仅当给定的所有内容都满足谓词时,all函数才返回true。我已经将元组绑定到一个列表中并检查了谓词。

我不明白您希望输出是什么。all\x->x`mod`2==0[a,b,c,d]可以简化为所有,甚至[a,b,c,d]。而且它在生成器中不是a:a,b,c,d。这个方法也可以工作,但jeffs的答案看起来很清楚:-也不是a:a,b,c,在generator@Sudantha我甚至在写这段代码时就忘记了函数。它绝对干净。
func [(244,244,244,244),(244,244,244,244),(244,244,244,244)]
[244,244,244]
a `divides` b =  b `mod` a == 0
func tuples =  [a | (a, b, c, d) <- tuples, all (divides 2) [a,b,c,d]]
type A = (Int, Int, Int, Int)
func :: [A] -> [Int]
func t =  [a | (a, b, c, d) <- t, all even [a,b,c,d]]