Лиспкит Лисп
![]() | В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Lispkit Lisp — это областью с лексической чисто функциональное подмножество Lisp (« Pure Lisp »), разработанное как испытательный стенд для концепций функционального программирования . Впервые он был использован для ранних экспериментов с отложенными вычислениями . написанная Машинная реализация SECD, на варианте ALGOL, была опубликована разработчиком Питером Хендерсоном в 1980 году. [1] Компилятор . и виртуальная машина легко переносимы и поэтому могут быть реализованы на многих машинах
Базовый язык
[ редактировать ]Базовый язык предоставляет только следующие функции, но расширения обсуждаются в книге Хендерсона. [1] за явную поддержку ленивых вычислений и недетерминированного программирования .
- атом
- данное выражение возвращает True, если его значение является атомарным; Ложь, если нет.
- добавлять
- заданные два выражения возвращают сумму их числовых значений.
- машина
- учитывая выражение, значением которого является пара, возвращает первое значение пары.
- CDR
- учитывая выражение, значением которого является пара, возвращает второе значение пары.
- минусы
- данные два выражения возвращают пару значений, состоящую из их значений.
- div
- заданные два выражения возвращают частное их числовых значений.
- экв.
- данные два выражения возвращают True, если их значения равны; Ложь, если нет.
- если
- заданные три выражения возвращают значение второго, если значение первого равно True, в противном случае возвращает значение третьего.
- лямбда
- учитывая список аргументов и выражение, возвращает их как функцию.
- позволять
- учитывая выражение с объявлениями (как именованные выражения, видимые в выражении), возвращает его значение.
- летрек
- как и let, за исключением того, что объявленные имена также видны в самих объявлениях.
- лек
- учитывая два выражения, возвращает True, если значение первого численно меньше или равно значению второго; Ложь, если нет.
- мод (или рем)
- учитывая два выражения, возвращает модуль (также известный как остаток) их числовых значений.
- у меня есть
- учитывая два выражения, возвращает произведение их числовых значений.
- цитировать
- учитывая выражение, возвращает это выражение как значение.
- суб
- учитывая два выражения, возвращает разницу их числовых значений.
Функции лямбда , let и letrec похожи, но имеют небольшие различия в способах обработки именованных переменных, что делает их полезными по-разному. Lambda определяет и возвращает функцию, let связывает выражения с именами переменных, а letrec по сути аналогичен let, за исключением того, что он позволяет определять рекурсивные функции и значения, например, бесконечные серии.
Ссылки
[ редактировать ]- ^ Jump up to: а б Хендерсон, Питер (1980). Функциональное программирование: применение и реализация . Прентис Холл. ISBN 0-13-331579-7 .
Дальнейшее чтение
[ редактировать ]- Хендерсон, Питер; Джонс, Герайнт А.; Джонс, Саймон Б. (1983). Руководство по ЛиспКиту . Компьютерная лаборатория Оксфордского университета. ISBN 0-902928-18-Х .