gpt4 book ai didi

haskell - 理解类型类声明中的类型参数

转载 作者:行者123 更新时间:2023-12-01 08:07:15 26 4
gpt4 key购买 nike

我在理解 State monad 以及其他 mtl monad 的类型参数指示什么时遇到了一些麻烦。就我的理解而言,当我编写一个 State monad 时,如 State String Int 中,我真正拥有的是 StateT String Identity Int。对于 MonadState 类型类的方法 get,它返回 m s,在这种情况下,'m' 是什么?是 Identity monad,Identity Int 吗?在这种情况下,表示状态类型的“s”是“m”的参数吗?

谢谢,我显然在理解 Haskell 的类型系统时遇到了一些麻烦。

最佳答案

好吧,这取决于您使用的是什么实例——这就是类型类的全部意义所在!

class MonadState s m where
get :: m s

如果是简单的 State,那就是你所在的 monad:

instance MonadState String (State String) where
get :: State String String

...这是

的缩写
instance MonadState String (StateT String Identity) where
get :: (StateT String Identity) String

呵呵,也可以是

instance MonadState Int (StateT Int IO) where
get :: StateT Int IO Int

关于haskell - 理解类型类声明中的类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22149549/

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