區域性變數

可以在函式內定義區域性變數

  • 減少程式碼重複
  • 給子表示式命名
  • 減少傳遞的引數數量。

這個結構是 let ... in ...

bigNumbers =
    let
        allNumbers =
            [1..100]

        isBig number =
            number > 95
    in
        List.filter isBig allNumbers

> bigNumbers
[96,97,98,99,100] : List number

> allNumbers
-- error, doesn't know what allNumbers is!

let 第一部分的定義順序無關緊要!

outOfOrder =
    let
        x =
            y + 1  -- the compiler can handle this

        y =
            100
    in
        x + y

> outOfOrder
201 : number