Haskell 如何返回一个数组,其中每个元素都响应某个检查

Haskell 如何返回一个数组,其中每个元素都响应某个检查,haskell,Haskell,我想返回一个bool列表,其中每个bool都响应某个检查,下面是一个javascript示例: if(x == 2) a = false; if(x == 3) b = false; if(y == 2) c = false; if(y == 3) d = false; return [a, b, c, d]; 肮脏的例子,我知道。只是想知道什么是好方法。您可以随时使用 f :: (Eq a, Num a,Eq b, Num b) => a ->

我想返回一个bool列表,其中每个bool都响应某个检查,下面是一个javascript示例:

if(x == 2)
    a = false;
if(x == 3)
    b = false;
if(y == 2)
    c = false;
if(y == 3)
    d = false;

return [a, b, c, d];
肮脏的例子,我知道。只是想知道什么是好方法。

您可以随时使用

f :: (Eq a, Num a,Eq b, Num b) => a -> b -> [Bool]
f x y = [x == 2, x == 3, y == 2, y == 3]
如果只有一个参数和多个谓词,则可以执行以下操作

f x = map ($ x) [p1,p2,p3,p4]
 where p1 = odd
       p2 = even
       p3 = (==3)
       p4 = (==4)
这有助于以编程方式创建检查另一个技巧是以另一种方式使用它

f x = map (==x) [1..10]
或者,当您有一个
xs
列表时,您可以使用
zipWith(=)xs[1..]

x=5
y=3
基本的

zipWith (==) [x,x,y,y] [2,3,2,3]
[False,False,False,True]
还是用魔法

import Control.Monad (liftM2)
liftM2 (==) [x,y] [2,3]
[False,False,False,True]

关于
[x==2,x==3,y==2,y==3]
你可以在这里找到你问题的答案。支票从哪里来?这太宽泛了,除了epsilonhalbe提供的确切示例的代码之外,不推荐任何特别的内容。@epsilonhalbe,谢谢!正是我想要的