csharp Monad C#的例子
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了csharp Monad C#的例子相关的知识,希望对你有一定的参考价值。
typeclassinstance Monad<Nullable> {
Nullable<b> >>=<a,b>(Nullable<a> val, Func<a, Nullable<b>> f) {
if (val.HasValue) {
return f(val.Value);
} else {
return null;
}
}
Nullable<a> return_<a>(a val) {
return new Nullable<a>(val);
}
Nullable<b> >><a,b>(Nullable<a> wrappedA, Nullable<b> wrappedB) {
return >>=(wrappedA, (a unwrappedA) => wrappedB);
}
}
typeclassinstance Monad<List> {
List<b> >>=<a,b>(List<a> lst, Func<a, List<b>> f) {
List<b> output = new List<b>();
foreach (a val in lst) {
// f(val) will return a list, so we concatenate the result
// of f(val) onto the end of the output list
output.AddRange(f(val));
}
return output;
}
List<a> return_<a>(a val) {
return new List<b>() { val };
}
List<b> >><a,b>(List<a> wrappedA, List<b> wrappedB) {
return >>=(wrappedA, (a unwrappedA) => wrappedB);
}
}
以上是关于csharp Monad C#的例子的主要内容,如果未能解决你的问题,请参考以下文章
csharp C#中的免费Monad实现(CSharp)
csharp Monad扩展
monad 的例子在哪里? [复制]
Not a Functor/Functor/Applicative/Monad 的好例子?
详解函数式编程之Monad
Monad的重点