局部定义,模式匹配在ocaml的用法

let f a b =
  (a +. b) +. (a +. b) ** 2.
  ;;

let f a b =
  let x = a +. b in
  x +. x ** 2.
  ;;
这两者都是等价的。

标准短语let name = expression in用来定义一个命名的局部表达式。以后name在这个函数中就可以用来代替expression,直到一个;;结束本代码块。注意我们在in之后并不缩进.只要把let ... in看作是一个整体就可以。

局部"变量"(实际是局部表达式)

我们来看C中的average函数并且加一个局部变量。

double average (double a, double b) { double sum = a + b; return sum / 2; }

现在来对OCaml版本做同样的事:

let average a b = let sum = a +. b in sum /. 2.0;;
 
==============
 
访问一般元组内部成分的一种方法是采用基于模式匹配的扩展的let局部定义。
 let a = 1, 2, 3 in
 let x, y, z =a in z, y, x;;
- : int * int * int = (3, 2, 1)

 
"let x,y,z=a"中,等号左边的 “x,y,z”称为模式pattern,x,y,z称为模式变量,
这个let等式构成一个模式匹配操作,把x,y,z分别关联到1,2,3。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值