Haskell 混淆应用函子中的纯函数
我有以下关于Haskell 混淆应用函子中的纯函数,haskell,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] p
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]
f
和a
都是类型变量。没有具体的类型。它将使用周围上下文所需的任何类型:t EXPR
时,ghci会将该类型打印为EXPR::type
。第一个::[Int]
是您键入的表达式的一部分;第二个::[Int]
是ghci计算的类型f
和a
都是类型变量。没有具体的类型。它将使用周围上下文所需的任何类型:t EXPR
时,ghci会将该类型打印为EXPR::type
。第一个::[Int]
是您键入的表达式的一部分;第二个::[Int]
是ghci计算的类型我不明白你的第一个问题。至于第二个:GHCi只是重复了你所问的表达式(
pure(+1)1):[Int]
),然后跟在它后面的是推断的类型(这在本例中很无聊,因为你已经明确写出了你想要的类型,导致了签名的精确复制)。谢谢,我不明白你的第一个问题。至于第二个:GHCi只是重复了你所问的表达式(pure(+1)1):[Int]
),然后跟在它后面的是推断的类型(这在本例中很无聊,因为你已经明确写出了你想要的类型,导致了签名的精确复制)。谢谢