【发布时间】:2013-02-14 11:02:22
【问题描述】:
假设我有一个列表推导,它返回一个序列列表,其中选择的元素相互依赖(参见下面的示例)。有没有办法(方便地)根据早期计算对元素的数量及其相关条件进行编程?例如,返回类型 [[a,b,c]] 或 [[a,b,c,d,e]] 取决于程序中的另一个值?此外,除了列表理解之外,还有其他/更好的方法来制定相同的想法吗?
(我认为有可能,虽然麻烦且有限,但可以编写一个更大的列表推导式开始并通过向 s 添加一个参数和辅助函数来修剪它,这些函数可以使一个或多个元素一个可以在以后轻松过滤的值,并且默认情况下关联的条件为True。)
s = [[a, b, c, d] | a <- list, someCondition a,
b <- list, b /= a, not (someCondition b),
otherCondition a b,
c <- list, c /= a, c /= b, not (someCondition c),
otherCondition b c,
d <- list, d /= a, d /= b, d /= c,
someCondition d, someCondition (last d),
otherCondition c d]
【问题讨论】:
-
你能发布你的实际代码吗?
-
@krshekhar:原来的格式是正确的。
-
@DietrichEpp ...当然,它在这里:stackoverflow.com/questions/14843466/… ...它计算序列以解决迷宫,但路径的长度基于另一个计算。
-
旁注:不要写
someCondition a == True,只写someCondition a。同样,not (someCondition b)而不是someCondition b == False。这种方式更具可读性。 -
@DietrichEpp 对不起,我错过了理解。
标签: haskell