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. На пути еще много всего.