我正在尝试使用此方法递归地构建列表。 OL(出现的字符列表)是最终缩小为[]的列表。我需要在警卫中使用Q来检查是否可以减去该项目。基本上它应该生产过滤的笛卡尔积。
b([[]], _)->[[]];
b(_, [])-> [[]];
b(OL, Keys)->[Y++[Q] || Y <- b(subtract(Q,OL), Keys), Q <-Keys, len(subtract(Q,OL)) < len(OL)].
但我得到错误:
变量&#39; Q&#39;没有约束
有没有办法在那个地方使用它的价值?
subtract-method从另一个列表中过滤掉字符。 减去([{$ a,1}],[{$ a,5},{$ b,1}])返回[{$ a,5},{$ b,1}]。
len()总结每个元组的整数值。 len([{$ a,5},{$ b,1}])返回6.
答案 0 :(得分:1)
尝试将Q生成器放入Y生成器使用之前。我猜这些定义是从左到右应用的,所以当应用Y时,没有定义Q.