gpt4 book ai didi

haskell - 什么是 Haskell 中的组合器

转载 作者:行者123 更新时间:2023-12-03 15:24:59 25 4
gpt4 key购买 nike

Real World Haskell ,他们这样描述组合子:

In Haskell, we refer to functions that take other functions as arguments and return new functions as combinators.



后来他们说 maybeIO function 是一个组合器,它的类型签名如下所示:
maybeIO :: IO a -> IO (Maybe a)

但我只能看到 maybeIO是一个函数,它接受一个包装在 IO monad 中的值并返回一个 IO monad 中的值。那么这个函数如何成为一个组合子呢?

最佳答案

当我们说组合器时,我们实际上可能意味着两件事。这个词有点过分了。

  • 我们通常指的是“组合”事物的功能。例如,您的函数采用 IO值(value)并建立一个更复杂的值(value)。使用这些“组合器”,我们可以组合并创建新的复合体 IO来自相对较少的原始函数的值来创建 IO值(value)观。
    例如,我们不是创建一个读取 10 个文件的函数,而是使用 mapM_ readFile .这里的组合器是我们用来组合和构建值的函数
  • 更严格的计算机科学术语是“没有自由变量的函数”。所以
     -- The primitive combinators from a famous calculus, SKI calculus.
    id a = a -- Not technically primitive, genApp const const
    const a b = a
    genApp x y z = x z (y z)
    这是一个称为“组合逻辑”的更宏大领域的一部分,在该领域中,您寻求从本质上消除自由变量并将其替换为组合器和一些原始函数。

  • TLDR:通常当我们说组合器时,我们指的是一个更一般的概念,称为“组合器模式”,其中我们有一些原始函数和许多用户定义的函数来构建更复杂的值。

    关于haskell - 什么是 Haskell 中的组合器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20027707/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com