相关疑难解决方法(0)

什么是monad?

最近简要介绍了Haskell,对于monad本质上是什么,简单,简洁,实用的解释是什么?

我发现我遇到的大多数解释都是相当难以接近的,缺乏实际细节.

monads haskell functional-programming terminology

1373
推荐指数
28
解决办法
23万
查看次数

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万
查看次数

Monad理论和Haskell

大多数教程似乎提供了很多monad(IO,状态,列表等)的例子,然后期望读者能够抽象出整体原则,然后他们提到类别理论.通过尝试从例子中进行概括,我不会学得很好,我想从理论的角度理解为什么这种模式如此重要.

从这个线索来看: 任何人都可以解释Monads吗? 这是一个常见的问题,我已经尝试查看大多数建议的教程(除了我的linux机器上不能播放的Brian Beck视频):

有没有人知道从类别理论开始的教程,并用这些术语解释IO,状态,列表monad?以下是我未能成功的尝试:

据我所知,monad包含一个三元组:一个endo-functor和两个自然变换.

仿函数通常显示类型:(a - > b) - >(ma - > mb)我包括第二个括号只是为了强调对称性.

但是,这是一个endofunctor,所以域和codomain不应该像这样吗?:

(a - > b) - >(a - > b)

我认为答案是域和codomain都有一种类型:

(a - > b)| (ma - > mb)| (mma - > mmb)等......

但我不确定这是否有效或符合给定的仿函数的定义?

当我们继续进行自然变革时,它会变得更糟.如果我理解正确,自然变换是二阶函子(具有某些规则),它是从一个仿函数到另一个仿函数的仿函数.因为我们已经定义了上面的仿函数,一般类型的自然变换将是:((a - > b) - >(ma - > mb)) - >((a - > b) - >(ma - > mb ))

但是我们使用的实际自然变换有类型:

a - > ma

ma - >(a - > mb) - > mb

这些一般形式的子集是否在上面?为什么它们会自然变换?

马丁

theory monads haskell types

35
推荐指数
4
解决办法
2890
查看次数

Monad用非编程术语表示

可能重复:
什么是monad?

您如何用非编程术语描述monad?是否有一些概念/事物在编程之外(在所有编程之外,而不仅仅是FP),可以说是以一种重要的方式行事或像monad一样?

monads haskell functional-programming

28
推荐指数
6
解决办法
5398
查看次数

哈斯克尔和国家

Haskell是一种纯函数式编程语言.

我的问题是:使用Haskell解决涉及大量状态的问题有 哪些优点和缺点,例如GUI编程或游戏编程?

还有一个次要问题:有哪些方法以功能方式处理状态?

提前致谢.

monads user-interface state haskell

15
推荐指数
2
解决办法
3351
查看次数

基本算法的功能编程

基本例程实现的"纯"函数式编程有多好,例如列表排序,字符串匹配等?

在任何函数式语言的基本解释器中实现这些基本函数是很常见的,这意味着它们将用命令式语言(c/c ++)编写.虽然有很多例外..

至少,我想问一下:在用"纯粹的"功能语言编码时,模仿命令式的风格有多难?

functional-programming

8
推荐指数
2
解决办法
3131
查看次数

为什么在Haskell Monads中将"bind"写为>> =?

Haskell Monads中语法">> ="和">>"的起源是什么?我不是在寻找Monads如何工作的解释,而是为什么语言设计者选择了这种语法.对我而言,">> ="和">>"似乎有点武断,从未有过直觉.有没有人有直观的解释?这是来自类别理论的语法吗?

monads haskell

6
推荐指数
1
解决办法
576
查看次数