10 受到其他“以xyz语言打高尔夫球的提示”的启发。与往常一样,请只提出OCaml特有的技巧,而不是一般的编程技巧。请给每个答案一个提示。 code-golf tips — 冰变量 source 1 介意我添加一些明显的提示吗? — 爱德华2015年
4 使用函数代替匹配 let rec f=function[]->0|_::t->1+f t 短于 let rec f x=match x with[]->0|_::t->1+f t — 爱德华 source
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 — 爱德华 source
2 利用衍生功能 生成了OCaml中的函数。有时利用这个事实可能会很有用。 let n y=f x y 可以写 let n=f x 如果需要算术运算,可以用括号将它们括起来,使它们的行为类似于标准的前缀函数。(+),(-),... let n=(+)1;; n 3;; - : int = 4 — 爱德华 source