我会在哪个文件中找到( - >)
的定义我的假设是,这是在GHC.something中的某个地方定义的,但搜索起来很棘手。
答案 0 :(得分:6)
->
是关键字,而不是中缀式函数。它没有在Haskell基础库中定义,也不能定义。
(编辑:但正如frasertweedale和Rein Henrichs所说,编译器给予了特殊处理,以便(->)
可以被视为常规类型构造函数。)
答案 1 :(得分:4)
(->)
不是关键字但是
类型构造函数。即:
λ> :i (->)
data (->) t1 t2 -- Defined in ‘GHC.Prim’
infixr 0 `(->)`
instance Monad ((->) r) -- Defined in ‘GHC.Base’
instance Functor ((->) r) -- Defined in ‘GHC.Base’
instance Applicative ((->) a) -- Defined in ‘GHC.Base’
instance Monoid b => Monoid (a -> b) -- Defined in ‘GHC.Base’
它只是一个中缀类型构造函数,您可以只使用它 像任何其他类型的构造函数一样。
定义它的位置的问题有点棘手。
在GHC.Base
的源代码中,您将找到以下内容
评价:
GHC.Prim Has no implementation. It defines built-in things, and by importing it you bring them into scope. The source file is GHC.Prim.hi-boot, which is just copied to make GHC.Prim.hi
GHC的构建过程直接生成一个接口文件,公开与(->)
相关联的行为。
答案 2 :(得分:1)
(->)
不是关键字,而是中缀式函数(因为您可以将其作为参数传递并可以部分应用),但由于其重要性,编译器会特别对其进行处理:{{ 3}}