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. code-golf tips 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
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
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
Respostas:
Use funções em vez de combinar
é mais curto que
fonte
Nunca use begin […] end
Este:
é sempre sinônimo disso:
fonte
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…:
Você não pode, no entanto, escrever:
Infelizmente, você não pode evitar o problema usando
rec
:fonte
Explorar funções com curry
As funções no OCaml são curryied. Pode ser útil explorar esse fato algumas vezes.
pode ser escrito
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.
(+)
,(-)
…fonte