jhe*_*dus 2 monads haskell category-theory applicative
在LYHFGG中,作者声称" Monads只是支持>> = "的应用函子(见下图).如果我看一下Monad类型的定义,我不会看到这个陈述是如何成真的.
Monad类型似乎与Control.Applicative类型没有任何关系,例如Monad类型类不是Applicative的子类型.所以很明显,从技术上讲,在Haskell中,Monads和Applicative仿函数是完全独立的类型.因此,如果作者的陈述是真的,那么它必须在不同的背景下成立.
有人可以通过这个看似不真实的陈述来解释这位作者的意思吗?
他的陈述应如何解释?在什么情况下?在类别理论的背景下或许?
换句话说: 我不知道如何将任何给定的Monad变成Applicative functor.因为如果作者的陈述是真的,那么每个Monad都可以机械地(通过使用算法)转换为Applicative仿函数.但是真的可以这样做吗?如果有,怎么样?
Tar*_*mil 14
你是对的,声明意味着当你所知道的是你的类型构造函数是一个monad时,你可以编写一个Applicative实例.如果M是monad,那么你可以写:
instance Applicative M where
pure = return
mf <*> mx =
mf >>= \f ->
mx >>= \x ->
return (f x)
Run Code Online (Sandbox Code Playgroud)
实际上,从GHC 7.10开始,Applicative
将是一个超类Monad
,意味着"Monad是Applicative plus ..."的概念将在标准库中出现.
归档时间: |
|
查看次数: |
840 次 |
最近记录: |