如何在 Haskell 中声明具有类型约束的新类型?

重量级

我正在尝试声明一个新类型值,如下所示:

data Value m = Wrong | Num Int | Fun (Value -> m Value)

GHCI抱怨:

<interactive>:160:39:
    Expecting one more argument to ‘Value’
    Expected a type, but ‘Value’ has kind ‘k0 -> *’
    In the type ‘Value -> m Value’
    In the definition of data constructor ‘Fun’
    In the data declaration for ‘Value’

PS:我正在尝试实现代码 The essence of functional programming

sepp2k

由于Value采用类型参数,因此您需要在任何时候使用Value. 也就是说,您应该将其称为Value m,而不仅仅是Value所以你的类型定义应该是:

data Value m = Wrong | Num Int | Fun ((Value m) -> m (Value m))

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何声明具有类型约束的数组?

如何在Haskell中访问名为元组字段的新类型

如何在Haskell中对类型类成员的返回值表达类型类约束?

如何在Haskell中得出构图类型

如何在Haskell中触发类型错误?

如何在Haskell中定义数组类型

数据声明Haskell中的类型约束

如何在Typescript中声明具有特殊类型的变量

如何在Haskell约束中应用通配符?

如何在haskell中声明两个包含相同变量的数据类型?

如何在两个具有不同输出类型的相同Haskell函数中删除代码重复?

如何在Haskell中使具有不同行为的相同类型?

如何在Haskell中生成具有自己的数据类型的列表

Haskell中具有新Matrix类型的标量乘法

如何在Haskell中的类型上执行分散/聚集操作?

如何在Haskell中获取'[String]的类型级别的值?

如何在haskell中创建几种相关的数据类型?

如何在 Haskell 中为参数类型创建 Arbitrary 的实例

如何在Haskell中合并不同类型的地图?

Haskell如何在MaybeT实现中推断正确的类型类?

您如何在Java中实现Haskell的IO类型?

如何在Haskell中按类型过滤列表

如何在Haskell中处理未装箱的类型

如何在Haskell中基于输入值限制类型?

如何在Haskell中为存在类型编写吸气剂

如何在haskell中创建泛型Complex类型?

如何在 Haskell 中对 (float,float) 类型的元素求和?

如何在haskell中证明类型级列表属性?

如何在 Haskell 中对类型类进行分组