14
A
回答
22
在Haskell其名字由字母數字字符都默認前綴的功能,由+
,>
,$
等字符組成的功能默認爲中綴。例如,你可以這樣定義
Prelude> let a $%^ b = a + b
Prelude> :t ($%^)
($%^) :: Num a => a -> a -> a
同樣適用於構造函數中綴函數(編輯:作爲@ChrisTaylor正確地指出,與限制,即中綴構造函數的名稱必須與:
開始)。該生產線
Prelude> data Rose a = a :> [Rose a]
就是說:>
是一個構造函數有兩個參數:
Prelude> :t (:>)
(:>) :: a -> [Rose a] -> Rose a
你還可創建一個普通的外觀構造函數
data Rose a = RoseCtr a [Rose a]
這將具有相同類型。在某些情況下,中綴函數/構造函數更直觀,並使代碼更易於理解。
相關問題
- 1. 哈斯克爾的構造函數
- 2. 哈斯克爾類型構造
- 3. 哈斯克爾構造類型包含
- 4. 插件組到構造哈斯克爾
- 5. 哈斯克爾樹:數據構造不在範圍內
- 6. 哈斯克爾
- 7. 哈斯克爾
- 8. 哈斯克爾
- 9. 哈斯克爾寫構造函數做他們的工作
- 10. 哈斯克爾函數定義約定
- 11. 哈斯克爾函數定義語法
- 12. 哈斯克爾代數數據類型
- 13. 哈斯克爾篩素數
- 14. 在哈斯克爾
- 15. 在哈斯克爾
- 16. 在哈斯克爾
- 17. Control.Monad.Writer哈斯克爾
- 18. 哈斯克爾 - div`
- 19. 在哈斯克爾
- 20. Control.Monad.State哈斯克爾
- 21. zipWith哈斯克爾
- 22. 在哈斯克爾
- 23. 哈斯克爾Monad.Writer
- 24. 哈斯克爾:獲取數據的構造函數的字符串類型
- 25. 插入數據庫哈斯克爾
- 26. 哈斯克爾的數據顯示
- 27. 數據類型哈斯克爾錯誤
- 28. 哈斯克爾組數據類型
- 29. 哈斯克爾在數據庫
- 30. 打印數據類型 - 哈斯克爾
您應該補充說infix類型的構造函數必須以:開頭,並且您需要TypeOperators語言編譯指示。 –
@ChrisTaylor:謝謝,你對結腸很正確,但你確定這個編譯指示嗎? GHC 7.6.3似乎並不需要它。 – fjarri
感謝您的解釋!但是我不明白操作員:>做了什麼?它是一個特殊的操作員還是創建的操作員,我是否可以把:<而不是:>? (什麼操作嗎?) – Skyfe