LM — это новый функциональный язык программирования, созданный для образовательных целей и получивший свое название от ML, написанного наоборот. Для загрузочного компилятора требуется Rust, поэтому Сначала нужно установить Rust. Затем LM можно установить с помощью следующей команды в терминале.
cargo install lambda_mountain
После этого мы можем начать программировать, запустив цикл чтения-оценки-печати.
lm repl >
Программы LM вводятся построчно. Каждая строка может либо объявить глобальную переменную, либо вычислить выражение. Объявления используют присваивание :=
для присоединения выражения к глобальному символу.
lm repl > x := 1 > x 1 >
LM — функциональный язык, поэтому мы можем объявить некоторые функции.
lm repl > f := λx. x x > f := λx y. x > f 1 (1 1) > f 2 3 2 >
Здесь мы видим, что функции также являются выражениями. Функция имеет λ (лямбда), за которым следует выражение, точка и еще одно выражение. Первое выражение перед точкой называется левой частью. Второе выражение после точки называется правой частью. Левая часть вводится, правая часть выводится.
Следующим важным понятием является применение функции, с которым мы уже немного познакомились в предыдущем примере. Когда функция применяется, ввод пытается сопоставиться с левыми частями всех доступных объявлений. В предыдущем примере у нас было два перекрывающихся определения f
. Когда мы применили f 1
, приложение сопоставило первое объявление x
, дав нам правую часть x x
. Поскольку мы вводим 1
, мы получаем вывод 1 1
.
Выражения можно заключать в круглые скобки, например (x x)
. Это означает, что x задано x в качестве входных данных. Мы можем использовать эти круглые скобки для создания списков таких вещей, как (1 2 3 4 5)
. Мы также можем создавать структуры данных, такие как (BTree (Leaf 1) (Leaf 2))
.
Это базовый обзор некоторых функций LM. На пути еще много всего.