当前位置:  开发笔记 > 小程序 > 正文

“通用箭头”和proc表示法?

如何解决《“通用箭头”和proc表示法?》经验,为你挑选了1个好方法。

在了解Control.ArrowHaskell的内置proc表示法时,我想到如果仅将typeclass泛化为允许通用操作而不是通用语言,则该语言可能会作为通用的单曲面类别(***用于张量和>>>合成)的eDSL很有用。的。Arrowtens :: * -> * -> *Arrow(,) : * -> * -> *

经过研究后,我发现GArrows似乎很适合我的需求。但是,链接的Garrow类型类与所谓的“ HetMet” GHC扩展捆绑在一起,并支持其他功能(暂时而言)(例如,“模式类型”)用处不大。

鉴于我希望能够使用这样的GArrow类型类而不必安装非标准的GHC扩展:

    在Hackage上是否有一个实际的(有点标准化)库可以满足我对此类通用箭头类型类的需求?

    有了这样的库,是否有任何方法可以使用这样的GArrow类型类并使用“通用proc”表示法,而不必准备自己的GHC扩展?(RebindableSyntax也许?)

注意:另外,我对准proc符号使用广义表示法也很好。因此,或许它不会太难修改像这样,以满足我的需求。



1> leftaroundab..:

我也曾经想过。但是- proc表示法被广泛认为是一个愚蠢的怪癖,以至于对概括也没有太多兴趣(尽管我敢说这实际上会使它变得有用!)

但是,实际上没有必要使用特殊语法。在这里必须命名的主要参考文献是Conal Elliott所做的关于将lambda表示法编译为双笛卡尔封闭类别的工作。我以为到现在为止在Haskell社区中会流行起来,但是某种程度上还没有。无论如何,它都可以作为GHC插件使用。

即使那也不总是需要的。对于某些类别组合器,您可以只包装在参数中通用量化的值,并将其视为伪返回值。我称这些Agent为约束类别;不确定这是否可用于您的应用程序,无论如何您都可以完成类似箭头的类别的几项操作。(在约束类别中,张量积被固定为(,),所以可能不是您想要的。虽然,您能解释一下所需的张量积吗?)

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有