相关疑难解决方法(0)

什么是monad?

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

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

monads haskell functional-programming terminology

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

纯度与参考透明度

这些术语似乎有 不同的定义,但我总是想到一个暗示另一个; 当表达式是引用透明但不纯粹时,我无法想到任何情况,反之亦然.

维基百科为这些概念维护单独的文章并说:

参考透明度:

如果表达式中涉及的所有函数都是纯函数,则表达式是引用透明的.此外,如果丢弃它们的值并且它们的副作用无关紧要,则表达式中可以包含一些不纯的函数.

来自纯粹的表达:

构造纯表达式需要纯函数.[...]纯表达通常被称为引用透明.

我发现这些陈述令人困惑.如果副作用所谓的"非纯函数"是微不足道的,足以让不执行他们(即替换其这种函数的调用没有实质性改变程序),它是一样的,如果它的是纯粹的第一名,不是吗?

有没有更简单的方法来理解纯表达式和引用透明的表达式之间的差异(如果有的话)?如果存在差异,则可以理解清楚地表明它的示例表达.

language-agnostic functional-programming side-effects referential-transparency purely-functional

58
推荐指数
2
解决办法
5664
查看次数

Haskell中的I/O是否具有功能性?

刚刚开始看看Haskell(我之前的FP体验是在Scheme中),我遇到了这段代码:

do { putStrLn "ABCDE" ; putStrLn "12345" }
Run Code Online (Sandbox Code Playgroud)

对我来说,这是程序式编程,如果有的话 - 特别是因为副作用的连续性.

有人请说明这段代码在任何方面都是"功能性的"吗?

io haskell functional-programming

15
推荐指数
3
解决办法
1088
查看次数

打印Haskell是一个纯函数吗?

在Haskell中打印是一个纯函数; 为什么或者为什么不?我认为这不是因为它并不总是返回与纯函数应该相同的值.

io monads haskell pure-function io-monad

7
推荐指数
2
解决办法
688
查看次数