Haskell:列表推导

时间:2019-05-11 13:19:36

标签: list haskell list-comprehension

我正在为考试做练习,但无法解决以下list-comprehensions-exercises:

a)创建n个元素n为n的无穷个平方数n ^ 2, 都是偶数,除以9则得到余数2,除以35则得到余数3,这意味着:

    [1444,446224,1684804,3717184,...]

b)为所有a∈{10,34,77,180},b∈{'p','r','g'},c创建一个礼拜堂(a,b,c,d)的列表∈{False,True}和d∈{'Y','Z'}。元素的顺序应先更改数字,然后更改小写字母,然后是boolean值,再更改大写字母,这意味着:

    [(10,’p’,False,’Y’),(34,’p’,False,’Y’),(77,’p’,False,’Y’) 
    (180,’p’,False,’Y’),(10,’r’,False,’Y’),(34,’r’,False,’Y’), 
    (77,’r’,False,’Y’),(180,’r’,False,’Y’)...]

我不太确定如何在实际的haskell代码中实现此功能。

1 个答案:

答案 0 :(得分:0)

a)

[n^2 | n <- [2, 4..],
       n `mod` 9 == 2,
       n `mod` 35 == 3]

对于b),以相反的顺序列出集合很重要。

[(a, b, c, d) | d <- ['Y', 'Z'],
                c <- [True, False],
                b <- ['p', 'r', 'g'],
                a <- [10, 34, 77, 180]]