jjzjj

javascript - 惰性求值可以通过 monadic 类型实现吗?

我目前正在研究结合Javascript中的monad的惰性求值,以及可能从中演化出哪些用例。所以我尝试实现一个惰性类型,它实现了functor/monad类型类。相应的构造函数在其参数和结果中是惰性的。这是我想出的://alazytype//(()->a)->()->bconstLazy=thunk=>()=>thunk();//(b->a->b)->b->Lazya->bLazy.fold=f=>acc=>tx=>f(acc)(tx());//(a->b)->Lazya->LazybLazy.map=f=>tx=>Lazy(()=>f(tx()));//Lazy(a->b)->Laz

c# - Monadic .NET 类型

InagreatseriesofpostsEricLippert为.NET类型概述了所谓的“Monad模式”,这些类型的行为有点像monad并为其中一些类型实现return和bind。作为一元类型的例子,他给出了:NullableFuncLazyTaskIEnumerable我有两个问题:我明白了Nullable有点像Maybe在Haskell中绑定(bind)多个Maybeactions表示一组可能在任何时候失败的操作。我知道列表monad(IEnumerable)代表非确定性。我什至有点明白什么Func作为monad(Readermonad)。Lazy的单子(monad)语义是什么

c++ - 在 C++ 中表达通用 monadic 接口(interface)(如 Monad 类)

是否有可能表达一种monad"C++?我开始写这样的东西,但卡住了:#includetemplatestructM;templatestructM{virtualM&operator>>(M&(*fn)(M&m,consta&x))=0;};templatestructMSome:publicM{virtualM&operator>>(M&(*fn)(M&m,consta&x)){returnfn(*this,x);}private:ax;};M&wtf(M&m,constint&v){std::coutv;//v>>wtf>>wtf;return0;}但面临缺乏多态性。实际上它可能是

c# - C# 6.0 中的 Monadic 空值检查

我偶然发现了一个有趣的站点,其中介绍了C#6.0的一些新(提议)功能。您可以在这里阅读:ProbableC#6.0features.我发现特别有趣的是单子(monad)空检查(也称为空传播运算符?.)。根据网站,声明如下varbestValue=points?.FirstOrDefault()?.X??-1;包含monadicnull检查,目前用这段代码实现:if(points!=null){varnext=points.FirstOrDefault();if(next!=null&&next.X!=null)returnnext.X;}return-1;我的第一眼是,嘿,这到底写了什