对期权的提升函数

问题描述有没有办法提升一个简单的函数,就像这样fnadd(a:i32,b:i32)->i32{a+b}对Option(或任何其他一元类型)进行操作,类似于在Haskell中使用Applicative我知道此解决方案:pubfnadd(a:Option<i32>,b:Option<

发布:2022-10-16 标签:functional-programmingmonadsrustlifting


平面列表和免费单元格

问题描述我试图说服自己,ListMonad(具有平面列表、列表连接和映射元素的Monad)不是自由Monad(准确地说,是与某个函数器T关联的自由Monad)。据我所知,我应该能够在年实现这一目标。首先在单体列表中查找常用运算符FMAP、Join等之间的关系然后证明了这种关系不存

发布:2022-10-16 标签:listmonadshaskellocamlcategory-theory


在绑定方面,如何定义应用?

问题描述在Haskell中,应用程序被认为比函数器更强,这意味着我们可以使用应用程序Like来定义函数器--Functorfmap::(a->b)->fa->fbfmapffa=puref<*>fa和Monad被认为比Applicative&amp;Functor更强,这意味着。

发布:2022-10-16 标签:monadshaskellapplicativefunctor


为什么定义MonadReader需要FunctionalDependency?

问题描述我刚刚理解了类的定义MonadReaderclassMonadm=>MonadReaderrm|m->rwhere...阅读了Haskell中的函数依赖文档,现在我可以理解|m->r指定类型变量r由m唯一决定。根据我目前所见的几个典型的MonadReader实例(例如Re

发布:2022-10-16 标签:type-systemsmonadshaskellghc


C++23的一元绑定和一元返回是什么可选的?

问题描述C++23std::optional终于得到了一些非常有用的附加功能。因为我对FP的了解非常原始,所以我想知道以下两个操作的语法是什么(根据我的Google搜索是两个基本的一元操作):一元绑定一元回报我的最佳猜测是:一元绑定transform一元返回仅为C++17std:

发布:2022-10-16 标签:c++monadsstdoptionalc++23


String.IsNullor Empty Monad

问题描述我最近涉足了函数式编程的迷人世界,这主要是因为我获得了像Reaction这样的FP平台的经验,并在https://blog.ploeh.dk/之类的博客上阅读了这些经验。作为一名主要的命令式程序员,这是一个有趣的转变,但我仍然在努力摸索自己的脚步。我有点厌倦了这样使用st

发布:2022-10-16 标签:stringc#nullfunctional-programmingmonads


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

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

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


通过(一元)JOIN和FMAP进行终止检查替换

问题描述我使用的是大小类型,并且有一个类型化术语的替换函数,该函数用于终止检查我是否直接给出定义,但如果我通过(一元)联接和FMAP将其分解,则不会。{-#OPTIONS--sized-types#-}moduleSubstwhereopenimportSize要显示问题,只需有

发布:2022-10-16 标签:substitutionmonadsterminationagda


《哈斯克尔与普里蒂》中的单曲

问题描述我的问题是,Haskell中的单体是否真的保持了Haskell的纯净,如果是的话,又是如何保持的。我经常读到关于副作用是如何不纯的,但有用的程序(例如I/O)需要副作用。在接下来的一句话中,哈斯克尔对此的解决方案是单体。然后,人们在某种程度上解释了单药,但并没有真正说明它

发布:2022-10-16 标签:iomonadshaskell


为什么验证会违反单一律?

问题描述onSO解释了为什么像scalaz、cat(Scala)或Arrow(Kotlin)这样的验证不能是Monad。据我所知,这是因为他们根据应用函数器对Monad进行了建模,并且将验证的期望行为作为应用(集合所有无效)与将验证作为Monad的期望行为(序列验证和在第一个无效

发布:2022-10-16 标签:monadsapplicativescalazscala-catsarrow-kt