Wskazówki dotyczące gry w golfa w OCaml

10

Inspirowany asortymentem innych „Porad do gry w golfa w języku xyz”. Jak zwykle, sugeruj tylko wskazówki, które są specyficzne dla OCaml i nie programują w ogóle. Poproszę jedną wskazówkę na odpowiedź.

zmienne lodowe
źródło
1
Czy mógłbym dodać kilka oczywistych wskazówek?
Édouard

Odpowiedzi:

4

Używaj funkcji zamiast dopasowywać

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

jest krótszy niż

let rec f x=match x with[]->0|_::t->1+f t
Édouard
źródło
3

Nigdy nie używaj początku […] końca

To:

begin […] end 

jest zawsze równoznaczne z tym:

([…])
Édouard
źródło
2

Zdefiniuj kilka zmiennych lub funkcji jednocześnie

Dzięki krotkom możesz zdefiniować kilka zmiennych jednocześnie. A jako funkcje są pierwszorzędni obywatele…:

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

Nie możesz jednak napisać:

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

Błąd: wartość niezwiązana f

Niestety nie można uniknąć tego problemu, używając rec:

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

Błąd: dozwolone są tylko zmienne jako lewa strona let rec

Édouard
źródło
2

Wykorzystaj funkcje curryied

Funkcje w OCaml są curry. Czasem warto wykorzystać ten fakt.

let n y=f x y

można napisać

let n=f x

Jeśli potrzebujesz operacji arytmetycznych, możesz otoczyć je nawiasami, aby działały jak standardowe funkcje prefiksów. (+),, (-)

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

- : int = 4

Édouard
źródło