
Все шаги крайне важны, и невозможно выделить самый-самый важный, либо второстепенный.
Данная статья не является пошаговой инструкцией, а лишь списком рекомендуемых шагов.
User
[1; 2; 3]
[]
означает пустой список.[2; 3]
.head :: tail
. Нижеприведённые строки полностью эквивалентны друг другу.[1; 2; 3] 1 :: [2; 3] 1 :: 2 :: [3] 1 :: 2 :: 3 :: []
int list
; общий тип для связного списка объектов типа foo
будет foo list
. ;;
и ;
average
на Си и добавим в неё локальные переменные (сравните её с примером в прошлой главе).double average (double a, double b) { double sum = a + b; return sum / 2; }
let average a b = let sum = a +. b in sum /. 2.0;;
let name = expression in
используется для определения локального именованного выражения и name
может быть использовано в дальнейшем вместо expression вплоть до ;;
, который означает окончание локального блока кода. Обратите внимание, мы даже не использовали отступ после объявления in
. Просто воспринимайте let ... in
так, как будто это один оператор.