我有以下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]
?
答案 0 :(得分:4)
f
和a
都是类型变量。没有具体的类型。它将使用周围环境所需的任何类型。
当您键入:t EXPR
时,ghci会将类型打印为EXPR :: TYPE
。第一个:: [Int]
是您键入的表达式的一部分;第二个:: [Int]
是由ghci计算的类型。