gpt4 book ai didi

haskell - 理解 `kind` 的 MonadTrans

转载 作者:行者123 更新时间:2023-12-01 09:55:17 25 4
gpt4 key购买 nike

查看 Monadkind:

ghci>:k Monad
Monad :: (* -> *) -> Constraint

我相信这是因为它从 m a 中获取一个 a,并返回 Monad 约束。

查看 MonadTrans 的 *kind,我看到:

ghci>:i MonadTrans
class MonadTrans (t :: (* -> *) -> * -> *) where
lift :: Monad m => m a -> t m a
-- Defined in `Control.Monad.Trans.Class'
instance MonadTrans MaybeT
-- Defined in `Control.Monad.Trans.Maybe'

所以,我相信第一个 (* -> *) 来自 Monadkind。但是 * -> * 呢?

最佳答案

第二个* -> *也是来自Monad的那种!一个 monad 转换器接受一个类型参数,它是一个 Monad(或者至少是一个具有 Monad 类型的类型)并产生一个新类型,它是一个 Monad(也有 Monad 的类型)。

 * -> *            -- a Monad
(* -> *) -> * -> * -- Something that takes a Monad and makes a new Monad.
* -> * -- also a Monad

关于haskell - 理解 `kind` 的 MonadTrans,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29505363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com