OCaml打高尔夫球的秘诀


10

受到其他“以xyz语言打高尔夫球的提示”的启发。与往常一样,请只提出OCaml特有的技巧,而不是一般的编程技巧。请给每个答案一个提示。


1
介意我添加一些明显的提示吗?
爱德华2015年

Answers:


4

使用函数代替匹配

let rec f=function[]->0|_::t->1+f t

短于

let rec f x=match x with[]->0|_::t->1+f t

3

永远不要使用开始[…]结束

这个:

begin […] end 

总是与此同义:

([…])

2

一次定义多个变量或函数

多亏元组,您可以一次定义多个变量。而且,职能是一等公民……:

let f,g=(fun x->x+1),fun x->2*x

但是,您不能这样写:

let f,g=(fun x->x+1),fun x->2*f x

错误:未绑定值f

不幸的是,您无法通过使用来避免此问题rec

let rec f,g=(fun x->x+1),fun x->2*f x

错误:仅允许变量作为左侧 let rec


2

利用衍生功能

生成了OCaml中的函数。有时利用这个事实可能会很有用。

let n y=f x y

可以写

let n=f x

如果需要算术运算,可以用括号将它们括起来,使它们的行为类似于标准的前缀函数。(+)(-),...

let n=(+)1;;
n 3;;

- : int = 4

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.