haskell - Haskell 中的列表推导是如何实现的?

标签 haskell monads ghc

  • 列表推导仅仅是一种语言功能吗?
  • 使用纯 Haskell 伪造列表理解的最简单方法是什么?
  • 您是否必须使用 do block />>=要做到这一点,或者你可以使用其他的
    一起破解列表理解的方法?

  • 澄清:通过“伪造”列表理解,我的意思是创建一个函数,该函数接受相同的输入并产生相同的输入,即返回值的形式、组合在一起的列表以及谓词或多个谓词。

    最佳答案

    Section 3.11 Haskell 报告中准确描述了列表推导的含义,以及如何将它们翻译掉。

    如果你想要单子(monad)理解,你基本上需要替换 [e]通过 return e , []通过 mzero , 和 concatMap通过 (>>=)在翻译中。

    关于haskell - Haskell 中的列表推导是如何实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20687896/

    相关文章:

    haskell - MonadRandom、State 和 monad 转换器

    haskell - bind 可以由 fmap 和 join 组成,那么我们必须使用一元函数 a -> m b 吗?

    haskell - `unsafeCoerce` Haskell 中的实现

    haskell - 在 Haskell 中实现这个 monad/类型?

    list - 根据 Haskell 列表中 n 的条件删除元素 n-1、n 和 n+1

    arrays - 使用 STArray 的 Haskell 并行计算

    generics - 使用 GHC.Generics 或 Data.Data 类型族

    haskell - 如果没有匹配的封闭类型族实例,有没有办法获得编译时错误?

    performance - 如何在haskell中严格制作表格(Data.Map)?

    rust - 提升功能到选项