为什么会出现以下情况
foo :: MonadIO m => m ()
foo = print "hi"
导致以下错误
无法将类型“m”与“IO”匹配。“m”是一个刚性类型变量,由类型签名绑定:foo::forall(m::*-
据我所知,既然IO()应该等于MonadIO,MonadIO约束不应该允许这样做吗?
IO
不等于MonadIO
。
MonadIO
是一个类型类,简单地说,它意味着所讨论的monad可以执行IO操作。实际上,由于IO
monad是“魔法”,这只能意味着两件事中的一件:所讨论的monad是IO
本身,或者所讨论的monad以某种方式包装IO
。
为了表达这种包装思想,MonadIO
type类有一个方法liftIO::IO a-
所以,要修复代码,只需
liftIO
:
foo :: MonadIO m => m ()
foo = liftIO $ print "hi"
销关节 cpPinJoint *cpPinJointAlloc(void) cpPinJoint *cpPinJointInit(cpPinJoint *joint, cpBody *a, cpBody *b, cpVect anchr1, cpVect anchr2) cpConstraint *cpPinJointNew(cpBody *a, cpBody *b, cpVect anchr1,
泛型的类型约束 swapTwoValues(_:_:)函数和Stack类型可以用于任意类型. 但是, 有时在用于泛型函数的类型和泛型类型上, 强制其遵循特定的类型约束很有用. 类型约束指出一个类型形式参数必须继承自特定类, 或者遵循一个特定的协议、组合协议. 例如, Swift的Dictionary类型在可以用于字典中键的类型上设置了一个限制. 如字典中描述的一样,字典键的类型必须是可哈希的. 也
我在typescript中有以下泛型类 但是我不知道为什么得到这个错误Class'(匿名类)'不正确地扩展基类'列'。属性getValue的类型不兼容。类型'(值:数字)=
本文向大家介绍PHP类型约束用法示例,包括了PHP类型约束用法示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP类型约束用法。分享给大家供大家参考,具体如下: 在强类型语言中,类型约束是语法上的要求,即定义一个变量的时候,必须指定类型,并以后也只能存储该类型数据; php是弱类型,其特点是无需为变量指定类型,而且在其后也可以存储任何类型,不过在php的新语法中,在某些特定场合,针对
我正在使用graphql spring boot为spring boot项目中的graphql查询提供服务。现在,我正在将graphql方案类型定义与我的spring实体进行匹配。无论出于何种原因,我都会遇到以下错误: 以下是我对
可能重复: 是否可能将可空类型作为泛型参数? 我遇到了一个关于泛型类型约束的非常奇怪的事情。我有一门课是这样的: 但是,我发现我不能像预期的那样使用null类型: 我得到一个错误,必须是引用类型。Nullable真的只是一个语法糖的结构,使其看起来像引用类型吗?