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ź. code-golf tips 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
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
Odpowiedzi:
Używaj funkcji zamiast dopasowywać
jest krótszy niż
źródło
Nigdy nie używaj początku […] końca
To:
jest zawsze równoznaczne z tym:
źródło
Zdefiniuj kilka zmiennych lub funkcji jednocześnie
Dzięki krotkom możesz zdefiniować kilka zmiennych jednocześnie. A jako funkcje są pierwszorzędni obywatele…:
Nie możesz jednak napisać:
Niestety nie można uniknąć tego problemu, używając
rec
:źródło
Wykorzystaj funkcje curryied
Funkcje w OCaml są curry. Czasem warto wykorzystać ten fakt.
można napisać
Jeśli potrzebujesz operacji arytmetycznych, możesz otoczyć je nawiasami, aby działały jak standardowe funkcje prefiksów.
(+)
,,(-)
…źródło