本節書摘來自異步社群《haskell函數式程式設計入門》一書中的第1章,第1.4節.hs和.lhs檔案、注釋與庫函數,作者 張淞,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視
1.4 .hs和.lhs檔案、注釋與庫函數
ghci和hugs可以解析擴充名為.hs和.lhs的檔案。兩者所寫程式在文法上完全相同,它們的差别是.lhs(literate haskell script)檔案是為了能讓haskell的代碼生成文檔。有效程式代碼可以用“大于号(>)”和空格開頭。比如:
add :: int -> int -> int add x y = x + y
使用.lhs檔案書寫代碼的優點很明顯。函數式程式設計的代碼往往蘊含了編寫者很大的思考量,需要用大段的注釋進行解釋說明,而代碼又不是特别長,這個時候用.lhs最好不過了—哪部分是代碼、哪部分是注釋一目了然,還能生成.pdf檔案友善閱讀與傳播。
但是,當不需要多行注釋還有生成文檔的時候就可以用擴充名為.hs的檔案。.hs檔案裡全局的函數要起頭寫,不可以有其他字元;單行的注釋用兩個減号(--)開頭,多行注釋用“{-”開頭,以“-}”結尾。全書對編寫的函數有非常多的闡述與解釋,并不包括在源代碼中,是以用.hs檔案就可以了。有時需要在檔案頭處對ghc與ghci聲明一些編譯器參數,此時需要在檔案首處定義,并且以“{-#”開頭,用“#-}”結尾。在後面的章節中,再具體學習使用編譯器參數。
在啟動ghci的時候,prelude中的一些預加載函數已經被導入了。prelude裡有很多常用的函數以及資料。安裝hugs的讀者可以到c:program fileswinhugspackages hugsbase hugs下找到prelude.hs庫函數檔案,有興趣的讀者可以打開prelude或其他檔案浏覽代碼。使用ghci的讀者可以在開始菜單的程式中找到haskell的網頁文檔,打開library連結,找到prelude,再點選source檢視。讀者可以通過檢視這些源檔案來感受haskell程式的風格。