[Haskell筆記]函數

引入了符號這個概念後,計算圓的面積輕松多了。

Prelude> pi * (5 ^ 2)
78.53981633974483
Prelude> pi * (25 ^ 2)
1963.4954084936207

可不可以再偷點懶呢?當然可以,每次計算圓面積的時候,僅僅換了半徑的值而已,每次都重復輸入圓面積公式,太麻煩了。這就要用到函數了。

在圓面積公式

s = pi*r^2

中,每次改變的只是r。那麽,可以認為s是r的一個函數,即

s=f(r)=pi*r^2

上述函數,在Haskell中這樣表達:

f r = pi * r ^ 2

和數學上的表達方式很相似,只是用空格代替了環繞自變量(在Haskell中稱為parameter)的括號而已。

值得注意的是,y=f(x)這樣的表達在Haskell中不成立。比如,如果你嘗試用s來代表求圓面積的函數:

Prelude>let s = f r = pi * r ^ 2

或者,

Prelude>let s = f r

GHCi都會報錯。在Haskell中,符號可以代表具體的值,也可以代表含有其它符號的表達式,比如:

Prelude>let doublePi = 2 * pi

後者其實是間接的代表具體的值,比如,上式也可以直接寫成:

Prelude>let doublePi = 6.283185307179586

但是,符號代表的值必須是不變的!而且,符號不可以用來代表一個函數。

好了,現在來嘗試一下我們的函數吧。

Prelude> let f r = pi * r ^ 2
Prelude> f 5
78.53981633974483
Prelude> f 25
1963.4954084936207

是不是很方便?

練習3.1 寫一個計算圓周長的函數。

Leave a Reply

Spam Protection by WP-SpamFree