![тизер к статье с графикой на OCaml](https://habrastorage.org/getpro/habr/post_images/923/f9c/3a3/923f9c3a37d9a2263615e60b69ed03c8.png)
Структура программ на OCaml
Теперь мы потратим немного времени на высокоуровневый анализ некоторых настоящих программ на OCaml'е. Я хотел бы показать вам локальные и глобальные определения, разницу в использовании
;;
и ;
Локальные «переменные» (на самом деле локальные выражения)
Возьмём нашу функцию
average
на Си и добавим в неё локальные переменные (сравните её с примером в прошлой главе).double average (double a, double b) { double sum = a + b; return sum / 2; }
Теперь посмотрим на это для OCaml:
let average a b = let sum = a +. b in sum /. 2.0;;
Стандартное выражение
let name = expression in
используется для определения локального именованного выражения и name
может быть использовано в дальнейшем вместо expression вплоть до ;;
, который означает окончание локального блока кода. Обратите внимание, мы даже не использовали отступ после объявления in
. Просто воспринимайте let ... in
так, как будто это один оператор.