Поради щодо гольфу в OCaml


10

Натхненний асортиментом інших "Поради щодо гольфу мовою xyz". Як завжди, пропонуйте лише поради, які є специфічними для OCaml, а не програмування в цілому. Будь-яка порада за кожну відповідь.


1
Майте на увазі, якщо я додам кілька очевидних порад?
Édouard

Відповіді:


4

Використовуйте функції замість відповідності

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

коротше, ніж

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

3

Ніколи не використовуйте початковий […] кінець

Це:

begin […] end 

завжди є синонімом цього:

([…])

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


2

Використовуйте корисні функції

Функції в OCaml - каррі. Цей факт може бути корисним іноді використовувати.

let n y=f x y

можна написати

let n=f x

Якщо вам потрібні арифметичні операції, ви можете оточити їх дужками, щоб вони поводилися як стандартні функції префікса. (+), (-)...

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

- : int = 4

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.