我已經找到了,並在互聯網上的定義,但我無法找到和的實際執行情況。我在我的電腦上搜索過某種序列的haskell文件,但它沒有返回任何可以在文本編輯器中打開的文件。如何查看「和」的實現代碼?
7
A
回答
19
您可以使用Hoogle搜索Haskell函數,就像這樣:
http://www.haskell.org/hoogle/?hoogle=and
的功能鏈接將您帶到這裏定義的函數庫模塊,而在這種情況下,鏈接and
需要我們在這裏:
http://hackage.haskell.org/packages/archive/base/latest/doc/html/Prelude.html#v:and
然後單擊Source
鏈接的功能名稱的右側,並把它你到那個函數的來源。對於and
的情況下,我們的鏈接到這裏:
http://hackage.haskell.org/packages/archive/base/latest/doc/html/src/GHC-List.html#and
and :: [Bool] -> Bool
or :: [Bool] -> Bool
#ifdef USE_REPORT_PRELUDE
and = foldr (&&) True
or = foldr (||) False
#else
and [] = True
and (x:xs) = x && and xs
or [] = False
or (x:xs) = x || or xs
#endif
你會看到,and
實際上有兩個定義。一種是標準前奏定義,只有在編譯時使用USE_REPORT_PRELUDE
標誌才能啓用標準前奏定義,另一種是Prelude通常編譯時使用的定義,該定義通常會進行更優化。
1
看http://www.haskell.org/onlinereport/standard-prelude.html
and
被定義爲foldr (&&) True
。
2
你不能指望在Haskell的本地發行版中找到源代碼 - 這可能是Haskell平臺。請轉至Hoogle並搜索該功能。其中一種方法是按照名稱搜索and
,轉到其Haddock,然後單擊「源」。
在Hoogle上,您還可以按類型簽名進行搜索,即。 [Bool] -> Bool
你可能會發現自己經常做的事。
相關問題
- 1. Android代碼來實現PDF查看器
- 2. 如何實現代碼
- 3. 如何實現此代碼?
- 4. 如何實現代碼
- 5. 如何查看Type.InvokeMember方法的實現?
- 6. 如何查看printf的實現源?
- 7. 查看網站的實際源代碼
- 8. 在基於AJAX的實現上查看頁面源代碼
- 9. 如何在Maple中查看函數/方法的源代碼實現?
- 10. 的NSArray和實現代碼如下
- 11. 查看代碼
- 12. 如何查看Base64編碼和GZInflated的PHP代碼?
- 13. 如何查看JavaScript呈現的源代碼?
- 14. TFS - 如何查看已查看的代碼,但不會更新代碼
- 15. 如何查看R的源代碼
- 16. 如何查看Python的__builtins__源代碼?
- 17. 如何查看Monad Reader的代碼?
- 18. 如何查看RouteValueDictionary類的源代碼
- 19. 如何查看totalview中的源代碼?
- 20. 如何查看Silverlight dll的源代碼
- 21. 如何查看xcode右側的代碼?
- 22. 如何查看SqueakSource的代碼?
- 23. 如何查看ADO.NET實體數據模型的代碼
- 24. 的實現代碼如下
- 25. 如何實現搜索查看Android中
- 26. 如何實現的Marketo跟蹤代碼
- 27. 實現代碼
- 28. 什麼是T-SQL代碼來實現現有查看錶的特定輸出?
- 29. 代碼點火器的foreach和查看
- 30. 如何查看寶石代碼
好奇心:有兩個定義有什麼意義? –
@ChrisTaylor我不知道。我只是假設優化基本庫的人有一些很好的理由來輸入所有這些額外的字符。 –
有趣的是,在該代碼之後有一個RULES編譯指示,它基本上告訴它僞裝成使用USE_REPORT_PRELUDE版本進行編譯/ foldr重寫 –