點燈坊

失くすものさえない今が強くなるチャンスよ

Haskell 之重新定義 Variable

Sam Xiao's Avatar 2020-02-03

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

redefine000

Lambda Function

f x = (\x -> 
       (\x -> 
        (\x -> x) 4) 3) 2

f 5

Let expression 都可使用 lambda function 改寫,只是可讀性並不高。

redefine001

Conclusion

  • 實務上不建議重新定義 variable,本文只是展示透過 let expression 與 lambda function 可做到,但 where clause 無法