种类在haskell中以哪种方式关联?

问题描述

我的任务是为这种类型的构造函数提供一个示例

* -> (* -> *)

但我找不到。

我的猜测是种类与右边相关联,因此上面给出的种类与

* -> * -> *

那样的话,Either 就是一个例子,不是吗?

解决方法

是的。

Prelude> :set -XKindSignatures 
Prelude> :k (Either :: * -> (* -> *))
(Either :: * -> (* -> *)) :: * -> * -> *

顺便说一句,* 表示法将被弃用。现代版本称为 Type

Either :: Type -> Type -> Type