在haskell中创建具有多个条件的列表

时间:2021-06-07 18:22:35

标签: haskell

定义序列 (bn)n=1,2,... 使得当 n 可被 3 整除时 bn=3,其他情况下 bn=4(n+1)^2。 定义一个函数,为参数 n 创建序列 (bn)n=1,2,... 的 n 个初始数字的列表。

到目前为止,我有两个条件 1 和条件 2 的列表:
divisible3 n = [x | x <- [1..n], x `mod` 3 == 0]
notdivisible3 n = [x*x*4+8*x+4 | x <- [1..n], x `mod` 3 /= 0]
我希望它是一个列表,例如:
list n = [x | x <- [1..n], condition1, condition 2]

1 个答案:

答案 0 :(得分:1)

您应该在列表推导式的“yield”部分写一个 if ... then ... else ...,而不是过滤器。所以像:

list n = [ if n `mod` 3 == 0 then … else … | x <- [1..n]]

我将 部分留作练习。