Лиспкит Лисп - Lispkit Lisp
Эта статья поднимает множество проблем. Пожалуйста помоги Улучши это или обсудите эти вопросы на страница обсуждения. (Узнайте, как и когда удалить эти сообщения-шаблоны) (Узнайте, как и когда удалить этот шаблон сообщения)
|
Лиспкит Лисп это лексически ограниченный, чисто функциональный подмножество Лисп ("Чистый Лисп") разработан как испытательный стенд для функциональное программирование концепции. Впервые он был использован для ранних экспериментов с ленивая оценка. An Машина SECD реализация на основе АЛГОЛ Вариант был опубликован разработчиком Питером Хендерсоном в 1980 году.[1] В компилятор и виртуальная машина очень портативный и в результате были реализованы на многих машинах.
Базовый язык
Базовый язык предоставляет только следующие функции, но расширения обсуждаются в книге Хендерсона.[1] за явную поддержку ленивых вычислений и недетерминированное программирование.
- атом
- данное выражение возвращает True, если его значение атомарно; Неверно, если нет.
- Добавить
- заданные два выражения возвращают сумму их числовых значений.
- машина
- для выражения, значение которого является парой, возвращает первое значение пары.
- CDR
- для выражения, значение которого является парой, возвращает второе значение пары.
- минусы
- заданные два выражения возвращают пару значений, состоящую из их значений.
- div
- заданные два выражения возвращают делимое их числовых значений.
- экв
- данные два выражения возвращают True, если их значения равны; Неверно, если нет.
- если
- заданные три выражения возвращает значение второго, если значение первого равно True, в противном случае возвращает значение третьего.
- лямбда
- учитывая список аргументов и выражение, возвращает их как функцию.
- позволять
- учитывая выражение с объявлениями (как именованные выражения, видимые в выражении), возвращает его значение.
- Letrec
- как let, за исключением того, что объявленные имена также видны в самих объявлениях.
- leq
- для данных двух выражений возвращает True, если значение первого численно меньше или равно значению второго; Неверно, если нет.
- мод (или rem)
- для двух выражений возвращает модуль (также известный как остаток) их числовых значений.
- мул
- для двух выражений возвращает произведение их числовых значений.
- цитата
- для данного выражения возвращает это выражение как значение.
- суб
- для двух выражений возвращает разницу их числовых значений.
Функции, лямбда, позволять, и Letrec, похожи, но имеют небольшие различия в способе обработки именованных переменных, что делает их полезными по-разному. лямбда определяет и возвращает функцию, позволять связывает выражения с именами переменных, и Letrec по существу похож на позволять за исключением того, что это позволяет определить рекурсивный функции и значения, например бесконечный ряд.
использованная литература
- ^ а б Хендерсон, Питер (1980). Функциональное программирование: применение и реализация. Прентис Холл. ISBN 0-13-331579-7.
дальнейшее чтение
- Хендерсон, Питер; Jones, Geraint A .; Джонс, Саймон Б. (1983). Руководство по LispKit. Компьютерная лаборатория Оксфордского университета. ISBN 0-902928-18-X.