【问题标题】:Unexpected parallel statement in a list comprehension Haskell列表理解 Haskell 中的意外并行语句
【发布时间】:2015-04-16 01:36:27
【问题描述】:

我收到此错误,我正在尝试实现布隆过滤器

Unexpected parallel statement in a list comprehension
Use ParallelListComp

从下面这行代码

addDB db idx = (last z) where z = db:[ setTrue  udb i  | udb <- z | i <- idx ]

有什么想法吗?

【问题讨论】:

  • 您的意思可能是[setTrue udb i | udb &lt;- z, i &lt;- idx],但如果您希望它更像zip,那么您需要在编译代码时启用ParallelListComp 扩展。常规列表理解的作用类似于笛卡尔积而不是 zip,遍历来自 zidx 的元素的每个组合。

标签: list haskell list-comprehension


【解决方案1】:

只需要添加

{-# LANGUAGE ParallelListComp #-}

感谢bheklilr指出这一点

【讨论】:

    【解决方案2】:

    你真的是想在那里使用parallel list comprehension 吗?引用Haskell 2010 Report,(正常)列表推导式具有[e | q_1, ..., q_n] 形式,其中每个限定符q_ip &lt;- e 形式的生成器、本地绑定或布尔值守卫。如果您打算使用其中之一,则应使用逗号而不是竖线来分隔列表理解中的限定符。

    【讨论】:

      猜你喜欢
      • 2023-03-25
      • 2016-01-22
      • 2010-09-18
      • 2021-06-26
      • 1970-01-01
      • 2011-12-23
      • 2019-12-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多