haskell - 为什么 GHCi 无法解析这种 [[]] ?

标签 haskell types polymorphism ghc

为什么 Haskell 无法解析这种 [[]](列表的列表)?
为什么它不只是 * -> *,因为我可以给它一个像 Int 这样的类型,并得到 [[Int]],这是一种 *。

最佳答案

我认为它与 Maybe Maybe 相同,尽管在后一种情况下,原因可能更清楚:“外部”类型构造函数期望传递一种类型 *,但看到类型 * -> * 的类型构造函数(“内部”Maybe/[])并提示。如果我是正确的,这实际上并不是 GHCi 的 :kind 功能的问题,而是找到正确的语法来表达更高级类型构造函数的组合的问题。

作为一种解决方法,类似于

:kind forall a. [[a]]
:kind forall a. Maybe (Maybe a)

可以使用(我认为,打开适当的语言扩展 - ExistentialQuantification - 来启用 forall 语法)。

关于haskell - 为什么 GHCi 无法解析这种 [[]] ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2994799/

相关文章:

haskell - 从 Haskell 中的命令行参数解析 CSV 列表

haskell - 为什么 Hugs 在我的数据类型声明中提示 `|`?

haskell - 使用类型族时证明约束

c# - C++ 是否有一些类似于 C# Type 的东西来将类的类型存储在列表/数组中?

java - 理解Java中的多态性

c++ - 解决这个多态性问题的最优雅的方法

haskell - 如何在 `type`关键字中使用typeclass?

c# - 如何使用 getType 对象的泛型类型

c - 如何将字符串拆分为不同的类型(int 表示数值,char 表示字母)?

c++ - C++中的继承(父类和子类)