gpt4 book ai didi

haskell - 使用 ghci 进行调查 (->) 并尝试追根溯源

转载 作者:行者123 更新时间:2023-12-02 14:32:39 25 4
gpt4 key购买 nike

我正在尝试使用 ghci 来调查类型 (->)

我很想知道为什么我可以询问 :t (+),但不能询问 :t (->):

Prelude> :t (->)
<interactive>:1:2: error: parse error on input ‘->’

幸运的是,两个运算符都允许使用 :i 进行调查,所以我认为这都是因为 (+) 是类 Num 的方法,而 (-> ) 是一个数据。

深入了解(->):

Prelude> :i (->)
data (->) (a :: TYPE q) (b :: TYPE r) -- Defined in ‘GHC.Prim’
infixr 0 ->
instance Applicative ((->) a) -- Defined in ‘GHC.Base’
instance Functor ((->) r) -- Defined in ‘GHC.Base’
instance Monad ((->) r) -- Defined in ‘GHC.Base’
instance Monoid b => Monoid (a -> b) -- Defined in ‘GHC.Base’
instance Semigroup b => Semigroup (a -> b) -- Defined in ‘GHC.Base’

但是 Hackage page for GHC.Prim 中没有任何数据 (->) 的痕迹。可能我检查的语言版本有误,但 AFAIS 0.5.3 是最新的,我的 ghci 版本也是最新的。

在哪里可以找到data (->)的声明?

最终,我想了解一下 TYPE,但我在 Google 上检索到的所有页面都在谈论 type

在哪里可以找到有关 TYPE 的信息?

最佳答案

既然评论里已经给出了答案,我总结一下:

  • (->) 是类型构造函数。您可以使用 :k (->) @Willem van Onsem 进行调查

  • GHC.Prim 在任何地方都没有源代码。它完全由编译器生成,您无需费心查看它。当 GHCi 告诉您那里定义了某些内容时,请将其理解为“来自天空”@dfeuer

关于haskell - 使用 ghci 进行调查 (->) 并尝试追根溯源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57903080/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com