我想返回一个Bools列表,其中每个都响应某个检查,这是一个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];
肮脏的例子,我知道。只是想知道什么是好方法。
答案 0 :(得分:1)
{name: 'Device Name'}
基本
x=5
y=3
或魔术
zipWith (==) [x,x,y,y] [2,3,2,3]
[False,False,False,True]
答案 1 :(得分:0)
你可以随时使用
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..]
。