回答
->
是一個關鍵字,不是中綴式函數。它沒有在Haskell基礎庫中定義,也不是。
(編輯:但作爲frasertweedale和瑞鷹Henrichs指出,它是由編譯器給予特殊待遇,使(->)
可以作爲一個普通類構造進行處理。)
(->)
不是一個關鍵字,但中綴式功能(你可以把它作爲一個參數,可以部分應用),但因爲它的重要性,它是由編譯器經過特殊處理:https://github.com/ghc/ghc/blob/75bf11c037d9e82f95ac9779bfd2b1432835bd76/compiler/types/TyCoRep.hs#L287
(->)
,Haskell語言本身,是不是關鍵字但 a 類型的構造函數。即:
λ> :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的構建過程中直接產生的接口文件暴露與(->)
相關聯的行爲。
' - >'仍然是非常特別的魔法。如果你問GHCi':我( - >)',它會報告「定義在'GHC.Prim'」中,但是如果你問':i(GHC.Prim .->)',它會說「不在範圍內: GHC.Prim - >'」。是的,它是一個類型構造函數,但它不是*類型構造函數。奇怪的兩個主要方面:1.使用'RankNTypes',它可以應用於量化類型。 2.使用'GADTs'或'GADTSyntax',被定義的類型必須出現在每個構造函數類型的最後一個箭頭的末尾。 – dfeuer
- 1. 在哪個文件中找到了drupal-6自定義塊?
- 2. EDI X12標準 - 我在哪裏可以找到這個定義?
- 3. 我在哪裏可以找到build.gradle文件中scmVersion的DSL定義
- 4. 我在哪裏可以找到包含printf函數定義的目標文件?
- 5. 我在哪裏可以找到自定義的可可/ xcode類文件?
- 6. 確定打開兩個文件時我們找不到哪個文件
- 7. 我如何找到哪個磚在glusterFS上有一個文件
- 8. 我在哪裏可以找到Qt用戶界面定義文件(XML中的.ui文件)的文檔
- 9. 我到底在哪裏包含自定義主題文件?
- 10. 我在哪裏可以找到spatstat中類對象的定義
- 11. 我在哪裏可以找到scala.Any和scala.AnyRef的定義?
- 12. 什麼是__dirstream,我們在哪裏可以找到的定義
- 13. 我在哪裏可以找到「eslint:recommended」的規則定義?
- 14. 我在哪裏可以找到?android:attr/listItemFirstLineStyle的定義
- 15. 我在哪裏可以找到size_t的定義?
- 16. 我在哪裏可以找到elasticsearch DSL的正式定義?
- 17. 我在哪裏可以找到jsf的模式定義?
- 18. 定義在哪裏?方法定義?我找不到任何文件關於它的
- 19. 我在哪裏可以找到我的ca.crt文件的私鑰
- 20. 我能找到這個文件在哪裏?
- 21. 我在哪裏可以找到我的日誌文件?
- 22. 我在哪裏可以找到我的日誌文件?
- 23. 我在哪裏可以找到我的Localizeable.strings文件?
- 24. 我在哪裏可以找到文件my.cnf或my.ini文件?
- 25. 哪裏可以找到CeCreateDatabaseWithProps的定義
- 26. 哪裏可以找到Theme_Material_Light的定義?
- 27. 我在哪裏可以找到wix自定義操作的文檔
- 28. 我在哪裏可以找到RoR預定義的ViewHelpers哈希文檔?
- 29. 我在哪裏可以找到大量的文本文件?
- 30. 找出哪些文件定義了一個宏
這是編譯器的源代碼,而不是運行時。 - >肯定是關鍵字;請參閱https://wiki.haskell.org/Keywords#-.3E – Sneftel
' - >'是在類型聲明中具有特殊處理的關鍵字,以使其可用,就像它是中綴型構造函數一樣。你是對的。或者都是錯誤的。取決於你想如何看待它。 –