函数monad真的提供了比函数应用函数更多的东西吗?如果是这样的话,是什么?

问题描述对于函数monad,我发现(<*>)和(>>=)/(=<<)有两个非常相似的类型。特别是,(=<<)使相似性更加明显:(<*>)::(r->a->b)->(r->a)->(r->b)(=<<)::(a->r->b)->(r->a)->(r->b)就像(<*>)和(>>=)

发布:2022-10-16 标签:functional-programmingmonadshaskellapplicativecombinatory-logic


相当于 Scala 中 Ruby 的 #tap 方法

问题描述Ruby有一种方法可以让我们观察值的管道,而无需修改底层值:Rubyhasamethodthatallowsustoobserveapipelineofvalues,withoutmodifyingtheunderlyingvalue:#Rubylist.tap{|o|p

发布:2022-10-16 标签:scalacombinatory-logic


SystemT编译器和Haskell中的无限类型处理

问题描述我正在关注此博客文章:http://semantic-domain.blogspot.com/2012/12/total-functional-programming-in-partial.htmlI'mfollowingthisblogpost:http://seman

发布:2022-10-16 标签:haskellocamllambda-calculuscombinatory-logic


可以使用SKI组合器表示XOR吗?

问题描述我对SKI组合器有疑问.能否仅使用S和K组合器来表示XOR(异或)?我有True=CancelFalse=(SwapCancel)其中Cancelxy=Kxy=xSwap:ffxy=Sffxy=ffyx解决方案布尔值您的问题在细节上还不清楚,但是您的意思似乎是您具有以下布

发布:2022-10-16 标签:booleanlogiccombinatorslambda-calculuscombinatory-logic


如何将字符串解析为GADT

问题描述我试图在Haskell中实现组合逻辑,并且我想写入语言的解析器。我无法通过Parsec解析器工作。基本的问题是我需要一种方法来确保解析器返回的对象输入正确。有没有人有关于如何做到这一点的创意?{-#LanguageGeneralizedNewtypeDeriving#-}

发布:2022-09-21 标签:haskellparsecgadtcombinatory-logic


组合子的类型签名与其等价的Lambda函数的类型签名不匹配

问题描述考虑这个组合:S(SK)$b$p将其应用于参数XY:$p$S(SK)XY合约到:XY我将S(SK)转换为相应的Lambda项并得到这个结果:(\xy->xy)我使用HaskellWinGHCi工具来获取(\xy->xy)的类型签名并返回:(t1->t)->t1->t这对我

发布:2022-09-21 标签:haskelltype-signaturecombinatorslambda-calculuscombinatory-logic


定义一个表单作为函数名称?

问题描述(define((Kx)y)x)(define(((Sx)y)z)((xz)(yz)))整个文件是here。这个合法的计划是什么?(Kx)是一个参数化函数,就像Java中的泛型函数一样?我查阅了麻省理工学院计划参考资料,看起来似乎在这种类型的定义中没有提到任何东西。解决方

发布:2022-09-21 标签:functionschemedefinitioncombinatorscombinatory-logic