10 Вдохновленный из ассортимента других «Советы для игры в гольф на языке XYZ». Как обычно, пожалуйста, предлагайте только советы, относящиеся к OCaml, а не к программированию в целом. Один совет за ответ, пожалуйста. code-golf tips icedvariables источник 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 Эдуар источник
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 Эдуар источник
Ответы:
Используйте функции вместо соответствия
короче чем
источник
Никогда не используйте начало […] конец
Эта:
всегда является синонимом этого:
источник
Определите несколько переменных или функций одновременно
Благодаря кортежам вы можете определять несколько переменных одновременно. А так как функции первоклассных граждан…
Вы не можете, однако, написать:
К сожалению, вы не можете избежать этой проблемы, используя
rec
:источник
Exploit curryied функции
Функции в OCaml каррированы. Иногда полезно использовать этот факт.
можно написать
Если вам нужны арифметические операции, вы можете заключить их в круглые скобки, чтобы они вели себя как стандартные префиксные функции.
(+)
,(-)
...источник