【问题标题】:List-Comprehension in Erlang - Variable unbound in guardErlang 中的列表理解 - 保护中未绑定的变量
【发布时间】:2014-07-19 12:56:40
【问题描述】:

我正在尝试使用此方法递归地构建一个列表。 OL(occurrence list of characters)是一个最终会缩小为[]的列表。我需要在警卫中使用 Q 来检查是否可以减去该项目。基本上它会产生一个过滤的笛卡尔积。

b([[]], _)->[[]];
b(_, [])-> [[]];
b(OL, Keys)->[Y++[Q] || Y <- b(subtract(Q,OL), Keys),  Q <-Keys, len(subtract(Q,OL)) < len(OL)].

但我得到了错误:

变量“Q”未绑定

有什么方法可以在那个地方使用它的价值吗?

减法从另一个列表中过滤字符。 减法([{$a,1}],[{$a, 5},{$b, 1}]) 返回 [{$a, 5},{$b, 1}]。

len() 对每个元组的整数值求和。 len([{$a, 5},{$b, 1}]) 返回 6。

【问题讨论】:

  • 您能否提供一个示例,说明您的函数 b 如何将输入转换为输出,就像您对减法和 b 所做的那样?

标签: filter erlang list-comprehension


【解决方案1】:

尝试将 Q 生成器放在 Y 生成器中使用之前。我猜这些定义是从左到右应用的,所以当应用 Y 时,没有定义 Q。

【讨论】:

  • 你能举个例子吗?谢谢!
猜你喜欢
  • 2016-06-14
  • 2018-02-25
  • 2015-04-20
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 2015-02-26
  • 1970-01-01
  • 2021-11-29
相关资源
最近更新 更多