作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 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/
我是一名优秀的程序员,十分优秀!