元组列表中的问题

时间:2011-06-06 13:13:41

标签: 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]

func [(244,244,244,244),(244,244,244,244),(244,244,244,244)]

输出

[244,244,244]

我有当前的代码,但问题是这只是检查...的位置但是我需要所有 a,b,c,d

2 个答案:

答案 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)

bcd添加更多警卫:

a `divides` b =  b `mod` a == 0
func tuples =  [a | (a, b, c, d) <- tuples, all (divides 2) [a,b,c,d]]