相关疑难解决方法(0)

应用仿函数更有趣

之前我曾询问过将monadic代码翻译为仅使用Parsec的applicative functor实例.不幸的是,我得到了几个回复,回答了我真正问过的问题,但并没有给我太多的了解.那么让我再试一次......

总结我到目前为止的知识,一个应用函子比一个monad更受限制.在"少即是多"的传统中,限制代码可以做什么会增加疯狂代码操作的可能性.无论如何,很多人似乎相信使用applicative而不是monad是一种可行的优越解决方案.

Applicative类的定义中Control.Applicative,它的黑线鳕的上市有益分离类的方法和实用功能与他们之间的类实例的广阔裹,使其很难迅速在屏幕上看到的一切在一次.但相关的类型签名是

pure ::    x              -> f x
<*>  :: f (x -> y) -> f x -> f y
 *>  :: f  x       -> f y -> f y
<*   :: f  x       -> f y -> f x
<$>  ::   (x -> y) -> f x -> f y
<$   ::    x       -> f y -> f x
Run Code Online (Sandbox Code Playgroud)

做得很完美,对吧?

好吧,Functor已经给了我们fmap,基本上就是这样<$>.即,由于从功能xy,我们可以映射一个f …

monads haskell applicative

19
推荐指数
4
解决办法
2268
查看次数

Monads如何被认为是纯粹的?

我对Haskell非常陌生,对语言的"架构"印象深刻,但是我仍然困扰着monad是如何纯粹的.

由于你有任何指令序列,它使它成为一个不纯的函数,尤其是 I/O函数从任何角度来看都不是纯粹的.

是因为Haskell像所有纯函数一样假设IO函数也有返回值,但是以操作码的形式还是什么?我真的很困惑.

monads haskell functional-programming purely-functional

6
推荐指数
4
解决办法
906
查看次数