ghci
:i Functor
给了我:
class Functor (f :: * -> *) where
fmap :: (a -> b) -> f a -> f b
...
(f :: * -> *)
是什么意思?看起来好像f
需要是一个函数,但这没有意义。
答案 0 :(得分:3)
星号*
是种的Haskell符号,即“类型类型”。
Prelude> :k Int
Int :: *
Prelude> :k Maybe
Maybe :: * -> *
Prelude> :k []
[] :: * -> *
Prelude> :k Maybe Int
Maybe Int :: *
Functor
类是为类型* -> *
的类型构造函数定义的,它采用一种类型并返回一个类型。