局部变量

可以在函数内定义局部变量

  • 减少代码重复
  • 给子表达式命名
  • 减少传递的参数数量。

这个结构是 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