相关疑难解决方法(0)

Monad用简单的英语?(对于没有FP背景的OOP程序员)

就OOP程序员所理解的而言(没有任何函数编程背景),monad是什么?

它解决了什么问题,它使用的最常见的地方是什么?

编辑:

为了澄清我一直在寻找的理解,让我们假设您正在将具有monad的FP应用程序转换为OOP应用程序.你会怎么做把monad的职责移植到OOP应用程序?

oop monads functional-programming

705
推荐指数
14
解决办法
12万
查看次数

帮助C#开发人员理解:什么是monad?

这些天有很多关于单子的讨论.我已经阅读了一些文章/博客文章,但我不能用他们的例子来完全掌握这个概念.原因是monad是一个函数式语言概念,因此这些例子都是我没有使用过的语言(因为我没有深入使用过函数式语言).我无法深入掌握语法以完全遵循这些文章......但我可以告诉它有一些值得理解的东西.

但是,我非常了解C#,包括lambda表达式和其他功能特性.我知道C#只有一部分功能特性,所以monad不能用C#表示.

但是,肯定有可能传达这个概念吗?至少我希望如此.也许您可以将C#示例作为基础,然后描述C#开发人员希望他可以从那里做什么,但不能,因为该语言缺乏函数式编程功能.这太棒了,因为它会传达monad的意图和好处.所以这就是我的问题:你可以给一个C#3开发人员提供monad的最佳解释是什么?

谢谢!

(编辑:顺便说一下,我知道SO上至少有3个"什么是monad"问题.然而,我遇到了同样的问题......所以这个问题需要imo,因为C#-developer焦点.谢谢.)

c# monads lambda c#-3.0

186
推荐指数
3
解决办法
3万
查看次数

为什么在即将推出的.NET 4.0中没有类似IMonad <T>的东西

...与所有那些新的(如果我们计算IEnumerable不是那么新)与monad相关的东西?

interface IMonad<T>
{
 SelectMany/Bind();
 Return/Unit();
}
Run Code Online (Sandbox Code Playgroud)

这将允许编写以任何monadic类型操作的函数.或者它不是那么重要?

.net c# monads

29
推荐指数
1
解决办法
4704
查看次数

C#中的Monads - 为什么Bind实现需要传递函数来返回monad?

我在C#中看到的monad的大多数例子都是这样编写的:

public static Identity<B> Bind<A, B>(this Identity<A> a, Func<A, Identity<B>> func) {
    return func(a.Value);
}
Run Code Online (Sandbox Code Playgroud)

例如,请参阅http://mikehadlow.blogspot.com/2011/01/monads-in-c-3-creating-our-first-monad.html.

问题是,要求func退货的重点是Identity<B>什么?如果我使用以下定义:

public interface IValue<A> {
    public IValue<B> Bind<B>(Func<A, B> func)
}
Run Code Online (Sandbox Code Playgroud)

那么我可以实际使用的同funcLazy<T>,Task<T>,Maybe<T>等没有实际根据实际类型实现IValue.

我在这里缺少什么重要的东西?

c# monads

17
推荐指数
1
解决办法
2909
查看次数

标签 统计

monads ×4

c# ×3

.net ×1

c#-3.0 ×1

functional-programming ×1

lambda ×1

oop ×1