haskell - 用 ghci 调查 (->) 并试图找到它的根源
问题描述
我正在尝试使用 ghci 来调查 type (->)
。
我很想知道为什么我可以问: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’
但是data (->)
在 GHC.Prim 的Hackage 页面中没有任何痕迹。可能我检查了错误的语言版本,但 AFAIS 0.5.3 是最新的,而我的 ghci 版本是最新的。
我在哪里可以找到 的声明data (->)
?
最终,我想阅读关于TYPE
,但我在 Google 上检索到的所有页面都在谈论type
。
我在哪里可以找到有关的信息TYPE
?
解决方案
由于评论中已经给出了答案,我在这里总结一下:
(->)
是一个类型构造函数。您可以使用:k (->)
@Willem van Onsem进行调查GHC.Prim
任何地方都没有源代码。它完全由编译器生成,您无需费心查看它。当 GHCi 告诉您那里定义了某些东西时,请读为它来自“天上” @dfeuer
推荐阅读
- etl - Snowflake Not Accepting File Format In Bulk Load
- java - 如何配置intellij以查找spring属性源
- cassandra - Datastax java 驱动程序 4.5 tinkerpop 依赖项
- google-apps-script - 当特定值出现在一行或整个工作表中时发送电子邮件
- react-native - 如何转到 FlatList 中的特定项目(索引)
- c# - ASP.NET Core 3.1 中的本地化
- azure - Blazor Azure B2C 获取 ClaimType newUser 重定向
- css - 对齐 flexbox 组件 flex-start 但在容器内居中
- haskell - 使用中缀运算符在 do 块内缩进
- javascript - 将 HTML 侧边栏转换为 JS 侧边栏