[static FL]part4: expression

let expression: let b1, b2... in e end
     bi是biding
     定义局部变量
     scope of binding: 在let中定义了该binding之后,以及e中都可以使用这个binding
     let的类型就是e的类型
     inner binding shadow outer ones
     let 也可以作为e出现在in中,bi可以是variable binding 也可以是function binding
     技巧:定义 local helper function,使用上下文的值,并且在函数中调用local helper function

case expression: case x of p1 => e1 | p2  => e1
     p: pattern,作用:匹配到正确的类型,取得数据并传给local变量,供e中使用
          变量pattern(如x):和值匹配, 将值绑定到变量中 
          C: 和没有值的Constructor匹配
          C p:和有值的Constructor匹配,值和p递归匹配
          (x1, x2)或者{C1:x1, C2:x2}:匹配each-of的类型
          _:wildcard matching。可以匹配任何东西,不引入新的binding
          数字:和数字匹配,不引入新的binding
经典pattern: [], x::xs'                    list
                    (x1, x2)                   tuple
                    {C1:x1, C2:x2}         record
                    None, Some x1       option
nested pattern:  a::(b::c)
                         a::(b::[])
case expression for function binding: fun f p1 = e1 | f p2 = e2...
     等价于 fun f x = 
                    case x of p1 => e1 | p2 => e2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值