混淆纯粹的应用函子

时间:2017-08-02 10:20:35

标签: haskell

我有以下pure函数示例:

Prelude> :t pure ((+1) 1)
pure ((+1) 1) :: (Num a, Applicative f) => f a

f包裹a的具体类型是什么?

例如,f(结构)在这里可能:

Prelude> pure ((+1) 1) :: Maybe Int
Just 2

以及结构是什么:

pure ((+1) 1)

第二个例子:

Prelude> :t pure ((+1) 1) :: [Int]
pure ((+1) 1) :: [Int] :: [Int]

为什么GHCi会显示两次类型,即:: [Int] :: [Int]不仅:: [Int]

1 个答案:

答案 0 :(得分:4)

  1. fa都是类型变量。没有具体的类型。它将使用周围环境所需的任何类型。

  2. 当您键入:t EXPR时,ghci会将类型打印为EXPR :: TYPE。第一个:: [Int]是您键入的表达式的一部分;第二个:: [Int]是由ghci计算的类型。