Dicas para jogar golfe no OCaml

9

Inspirado na variedade de outras 'Dicas para jogar golfe no idioma xyz'. Como sempre, sugira apenas dicas específicas para o OCaml e não para programação em geral. Uma dica por resposta, por favor.

icedvariables
fonte
11
Se importa se eu adicionar algumas dicas óbvias?
Édouard

Respostas:

3

Use funções em vez de combinar

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

é mais curto que

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

Nunca use begin […] end

Este:

begin […] end 

é sempre sinônimo disso:

([…])
Édouard
fonte
1

Defina várias variáveis ​​ou funções de uma só vez

Graças às tuplas, você pode definir várias variáveis ​​ao mesmo tempo. E como funções são cidadãos de primeira classe…:

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

Você não pode, no entanto, escrever:

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

Erro: valor não consolidado f

Infelizmente, você não pode evitar o problema usando rec:

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

Erro: Somente variáveis ​​são permitidas no lado esquerdo da let rec

Édouard
fonte
1

Explorar funções com curry

As funções no OCaml são curryied. Pode ser útil explorar esse fato algumas vezes.

let n y=f x y

pode ser escrito

let n=f x

Se você precisar de operações aritméticas, poderá colocá-las entre parênteses para que se comportem como funções padrão de prefixo. (+), (-)

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

- : int = 4

Édouard
fonte