Советы по игре в гольф в OCaml


10

Вдохновленный из ассортимента других «Советы для игры в гольф на языке XYZ». Как обычно, пожалуйста, предлагайте только советы, относящиеся к OCaml, а не к программированию в целом. Один совет за ответ, пожалуйста.


1
Не возражаете, если я добавлю несколько очевидных советов?
Эдуар

Ответы:


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

Exploit curryied функции

Функции в 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.