Лиспкит Лисп - Lispkit Lisp

Лиспкит Лисп это лексически ограниченный, чисто функциональный подмножество Лисп ("Чистый Лисп") разработан как испытательный стенд для функциональное программирование концепции. Впервые он был использован для ранних экспериментов с ленивая оценка. An Машина SECD реализация на основе АЛГОЛ Вариант был опубликован разработчиком Питером Хендерсоном в 1980 году.[1] В компилятор и виртуальная машина очень портативный и в результате были реализованы на многих машинах.

Базовый язык

Базовый язык предоставляет только следующие функции, но расширения обсуждаются в книге Хендерсона.[1] за явную поддержку ленивых вычислений и недетерминированное программирование.

атом
данное выражение возвращает True, если его значение атомарно; Неверно, если нет.
Добавить
заданные два выражения возвращают сумму их числовых значений.
машина
для выражения, значение которого является парой, возвращает первое значение пары.
CDR
для выражения, значение которого является парой, возвращает второе значение пары.
минусы
заданные два выражения возвращают пару значений, состоящую из их значений.
div
заданные два выражения возвращают делимое их числовых значений.
экв
данные два выражения возвращают True, если их значения равны; Неверно, если нет.
если
заданные три выражения возвращает значение второго, если значение первого равно True, в противном случае возвращает значение третьего.
лямбда
учитывая список аргументов и выражение, возвращает их как функцию.
позволять
учитывая выражение с объявлениями (как именованные выражения, видимые в выражении), возвращает его значение.
Letrec
как let, за исключением того, что объявленные имена также видны в самих объявлениях.
leq
для данных двух выражений возвращает True, если значение первого численно меньше или равно значению второго; Неверно, если нет.
мод (или rem)
для двух выражений возвращает модуль (также известный как остаток) их числовых значений.
мул
для двух выражений возвращает произведение их числовых значений.
цитата
для данного выражения возвращает это выражение как значение.
суб
для двух выражений возвращает разницу их числовых значений.

Функции, лямбда, позволять, и Letrec, похожи, но имеют небольшие различия в способе обработки именованных переменных, что делает их полезными по-разному. лямбда определяет и возвращает функцию, позволять связывает выражения с именами переменных, и Letrec по существу похож на позволять за исключением того, что это позволяет определить рекурсивный функции и значения, например бесконечный ряд.

использованная литература

  1. ^ а б Хендерсон, Питер (1980). Функциональное программирование: применение и реализация. Прентис Холл. ISBN  0-13-331579-7.

дальнейшее чтение

  • Хендерсон, Питер; Jones, Geraint A .; Джонс, Саймон Б. (1983). Руководство по LispKit. Компьютерная лаборатория Оксфордского университета. ISBN  0-902928-18-X.

внешние ссылки