gpt4 book ai didi

haskell - "Generalized arrows"和 proc 符号?

转载 作者:行者123 更新时间:2023-12-04 01:08:50 24 4
gpt4 key购买 nike

在了解 Control.Arrow 时和 Haskell 的内置 proc表示法,我的想法是,如果仅使用 ***,那么这种语言可能会被证明是非常有用的 eDSL,用于一般的 monoidal 类别(使用 >>> 用于张量和 Arrow 用于组合)类型类被泛化以允许通用 tens :: * -> * -> *操作而不是 Arrow(,) : * -> * -> * .

经过一番研究,我发现 GArrows ,这似乎符合我的需要。但是,链接的 Garrow typeclass 与所谓的“HetMet”GHC 扩展捆绑在一起,并支持其他我没有太多用处的特性(无论如何),例如“模态类型”。

鉴于我希望能够使用这样的 GArrow无需安装非标准 GHC 扩展的 typeclass:

  • Hackage 上是否有一个实际的(有些标准化的)库可以满足我对这种通用箭头类型类的需求?
  • 给定这样一个库,有没有办法使用这样的 GArrow使用“通用 proc”符号键入类,而无需编写我自己的 GHC 扩展? (也许是 RebindableSyntax?)

  • 注意:另外,我可以使用 quasiquotation 进行广义 proc符号。所以也许修改像 this 这样的东西不会太难以满足我的需要。

    最佳答案

    我以前也想过这个问题。但是——proc符号被广泛认为是一个愚蠢的怪人,可能对泛化也没有太大兴趣(尽管我敢说这是使它真正有用的原因!)

    然而,实际上没有必要有特殊的语法。此处必须提及的主要引用资料是 Conal Elliott 在 compiling lambda notation to bicartesian closed categories 上的工作。 .我认为这会在一段时间后在 Haskell 社区中流行起来,但不知何故没有。无论如何,它都可以作为 GHC 插件使用。

    即使这并不总是需要的。对于某些类别组合器,您可以只包装一个在参数中普遍量化的值,并将其视为伪返回值。我调用那些 Agent in constrained-categories ;不确定这是否适用于您的应用程序,无论如何,您会使用类似箭头的类别来做几件事 can be done . (在受限类别中,张量积固定为 (,),但是,可能不是您想要的。虽然,您能解释一下您需要什么张量积吗?)

    关于haskell - "Generalized arrows"和 proc 符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56620644/

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