Haskell 強調 Immutable,重新定義 Variable 實務上甚少使用,但因為很特別,所以加以記錄。
Version
Haskell for Mac 1.8.2
Let Expression
f x =
let x = 2
in
let x = 3
in
let x = 4
in
x
f 5
x
先改成 2
,再改成 3
,最後改成 4
回傳。
由於只是改變
f
內的x
,因此不算 side effect
Lambda Function
f x = (\x ->
(\x ->
(\x -> x) 4) 3) 2
f 5
Let expression 都可使用 lambda function 改寫,只是可讀性並不高。
Conclusion
- 實務上不建議重新定義 variable,本文只是展示透過 let expression 與 lambda function 可做到,但 where clause 無法