【发布时间】:2017-03-14 09:59:51
【问题描述】:
在ghci :i Functor 给我:
class Functor (f :: * -> *) where
fmap :: (a -> b) -> f a -> f b
...
(f :: * -> *) 是什么意思?看起来f 需要是一个函数,但这没有意义。
【问题讨论】:
标签: haskell syntax type-kinds
在ghci :i Functor 给我:
class Functor (f :: * -> *) where
fmap :: (a -> b) -> f a -> f b
...
(f :: * -> *) 是什么意思?看起来f 需要是一个函数,但这没有意义。
【问题讨论】:
标签: haskell syntax type-kinds
星号* 是 kinds 的 Haskell 符号,即“类型的类型”。
Prelude> :k Int
Int :: *
Prelude> :k Maybe
Maybe :: * -> *
Prelude> :k []
[] :: * -> *
Prelude> :k Maybe Int
Maybe Int :: *
Functor 类是为 * -> * 类型的类型构造函数定义的,它采用一种类型并返回一个类型。
【讨论】: