[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