天天看點

《Haskell函數式程式設計入門》—— 第1章,第1.3節GHCi的使用

本節書摘來自異步社群《haskell函數式程式設計入門》一書中的第1章,第1.3節ghci的使用,作者 張淞,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

1.3 ghci的使用

ghci是一個對函數進行測試與調式的工具,可以導入haskell源代碼檔案,然後調用其中的函數、檢視函數的資訊等。本節先學習如何使用ghci中的指令來對檔案和庫進行導入等,再來了解如何在ghci中調用函數。

啟動ghci後可以看到ghci的版本,還有導入的庫等,可以不用管它們,最後一行會有一個prelude>提示符,其中prelude指的是ghci在運作時一個預設的初始環境。它是一個定義了很多類型與函數的庫。啟動ghci後,使用者可以不做任何設定而直接使用其中定義的内容。下面來看一下ghci中的一些指令。

1.3.1 ghci中的指令

下面介紹一些常用的ghci指令,學習如何導入代碼檔案和庫子產品,以及如何改變ghci的目前路徑等。

:load:簡寫為:l,用來導入目前路徑或者指定路徑下的檔案,但在windows下要注意使用轉義的反斜杠。比如,導入作者桌面上hellowrold檔案夾下的helloworld.hs,winghci的使用者可以直接使用打開按鈕來打開程式檔案。

:reload:簡寫為:r,用來重新導入目前的源代碼檔案。通常,在儲存了源檔案後,ghci不會自動重新導入修改後的檔案,使用者可以很友善地使用:r來重新導入。winghci的使用者可以使用重新整理按鈕來重新導入程式檔案。

:cd:改變目前ghci的路徑。這樣做就不用每一次都輸入絕對路徑來導入檔案了。例如:

<code>prelude&gt;:cd c:\users\user\desktop</code>

:module:導入一個庫,簡寫為:m。使用:m +與:m – 來增加與移除不同的子產品。在後面會具體介紹如何使用這個指令。

:quit:退出ghci。

:?:可以讓ghci輸出幫助資訊。

當然,ghci的指令還有很多,本書将在後面的章節再做介紹。這裡約定:若沒有特别說明,則ghci指的就是winghci,而不是指令行的下的ghci。

1.3.2 在ghci中調用函數

很多數值比如整數、小數還有一些四則運算的函數都已經在上節中提過的prelude初始環境中定義好了,是以可以直接使用。由于在prelude中定義了各種數學運算符号,是以ghci可以當做一個電腦來使用。比如:

除了邏輯與運算&amp;&amp;外,prelude中還提供了邏輯或運算符||,使用者可以在ghci中測試這個函數。

prelude中還提供非常實用的容器—清單。有了它就可以很靈活地對值進行存儲和使用相關的函數。[1..4]表示周遊整數1~4,即[1,2,3,4]。

[1..4] [1,2,3,4]

sum是一個可以對清單中的數值進行求和的函數。也就是說,給定一個清單sum,會求得該清單中所有元素的和。比如:

sum [1..4]

10

prelude中的product函數可以求得一個清單的所有元素的乘積,讀者可以在ghci中計算[1..4]的乘積。

如果想引用之前調用的函數所計算的結果,可以使用it。比如,計算了1~4之間的整數之和後想再加100可以寫為:

it + 100

110

因為it在ghci中可以指代前一次函數計算的結果,是以在定義函數還有測試時不要使用it作為函數或者變量的名稱。

最後,約定如下:如果書中隻用&gt;符号,然後調用函數或者輸入ghci指令,則表示在ghci的提示符中的操作,而c:&gt;則是系統指令行的提示符。

繼續閱讀