了解类型声明中的类型参数

hcaulfield57

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

谢谢,我显然很难理解Haskell的类型系统。

到处走走

好吧,这取决于您使用的实例–这就是类型类的重点!

class MonadState s m where
  get :: m s

在简单的情况下State,这就是您所在的单子目录:

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

...的缩写

instance MonadState String (StateT String Identity) where
  get :: (StateT String Identity) String

OTOH,也可能是

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

了解类型声明

来自分类Dev

链接子类型中类型参数的注释以声明超类型中的类型参数

来自分类Dev

类型参数声明中的无形解构元组

来自分类Dev

如何在参数中声明字典类型?

来自分类Dev

类型参数声明中的无形解构元组

来自分类Dev

了解Scala中Some类型的val声明语法

来自分类Dev

在类中声明类型参数时,Java泛型类型会丢失常量类型

来自分类Dev

通用方法类型参数声明

来自分类Dev

Anylogic:声明ArrayList类型的参数

来自分类Dev

通用方法类型参数声明

来自分类Dev

Java泛型:方法声明参数中的类型扩展

来自分类Dev

在Java的Collections对象中两次声明类型参数

来自分类Dev

如何在TypeScript中重用参数类型声明

来自分类Dev

PHP:输入参数的类型声明中的类常量

来自分类Dev

在 C 中声明指针类型的参数时使用 `const`

来自分类Dev

了解类型注释中的类型变量

来自分类Dev

不了解Verilog中的类型

来自分类Dev

在创建多维数组时了解参数类型

来自分类Dev

从可变参量模板类中推导类型压缩,并声明相同类型压缩的参数

来自分类Dev

错误:注释类型声明中的元素不能声明形式参数

来自分类Dev

在实例声明中引用类型

来自分类Dev

类型声明中的vararg的规范

来自分类Dev

在函数中声明函数的类型

来自分类Dev

在数组中声明类型?

来自分类Dev

在类中声明对象类型

来自分类Dev

ISO C ++禁止声明无类型的“参数”

来自分类Dev

用于多个参数函数的Haskell类型声明

来自分类Dev

C++ 函数参数类型声明的含义

来自分类Dev

类型参数中`::`的含义?