【发布时间】:2019-10-13 16:43:03
【问题描述】:
我正在编写一个函数,它使用理解列表比较 haskell 中的两个向量。问题是我想将布尔值添加到我的最终列表中,但是 Haskell 将此代码解释为好像 x == y,将元素添加到列表中(这就是我所知道的综合列表的工作方式)。如果我要比较的坐标是真还是假,我想要的是一个带有布尔值的列表。 可以用理解列表来做到这一点吗?
igualdad :: Vector -> Vector -> [Bool]
igualdad v1 v2 = [ x == y | x <- xs, y <- ys]
where xs = vectorToFloatList v1
ys = vectorToFloatList v2
PD:我将使用 foldr (&&) True 和返回 igualdad 的列表,以获得我想要的最终结果。 谢谢。
【问题讨论】:
-
这将返回
Bools 的列表。我不确定什么不起作用。对于长度为 m 和 n 的两个向量,它将生成一个包含 mn 个元素的列表。 -
不,它只是在 x == y 时将项目添加到列表中,我需要它在 x /= y 时将 false 添加到列表中
-
这里就是这样。你可以检查一下。如果你写了
[x == y | x <- xs, y <- ys, x == y],它只会添加Trues(所以在右端有一个条件)。 -
@milverac8:你确定你的向量包含的不是一个值吗,你确定
vectorToFloatList工作正常吗?
标签: haskell