Главная » Просмотр файлов » globalf5-240972240972

globalf5-240972240972 (850810), страница 8

Файл №850810 globalf5-240972240972 (Основы функционального программирования) 8 страницаglobalf5-240972240972 (850810) страница 82025-05-22СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 8)

Их разложение по литерам44Л.В. ГородняяОсновы функционального программированияне имеет смысла.S-выражение ::= атом| (S-выражение . S-выражение)| (S-выражение ... )Данное правило констатирует, что S-выражения — это или атомы, илиузлы из пары S-выражений, или списки из S-выражений. (Три точкиозначают, что допустимо любое число вхождений предшествующеговида объектов, включая ни одного.)Согласно такому правилу "()" есть допустимое S-выражение. Оно вязыке Лисп по соглашению эквивалентно атому NIL.Базовая система представления данных — точечная нотация, хотя напрактике запись в виде списков удобнее. Любой список можнопредставить точечной нотацией:() = NIL(a . NIL) = (a)--(a1 . ( ... (aK .

NIL) ... )) = (a1 ... aK)Такая единая структура данных оказалась вполне достаточной дляпредставления сколь угодно сложных программ. Дальнейшееопределение языка Лисп можно рассматривать как восходящий процессгенерации семантического каркаса, по ключевым позициям которогораспределены семантические действия по обработке программ.Другие правила представления данных нужны лишь при расширении испециализации лексики языка (числа, строки, имена особого вида ит.п.).

Они не влияют ни на общий синтаксис языка, ни на строй егопонятий, а лишь характеризуют разнообразие сферы его конкретныхприложений.Синтаксис программ является конкретизацией синтаксиса данных, аименно — выделением из класса S-выражений подкласса вычислимыхвыражений (форм), т.е. данных, имеющих смысл как выражения языка иприспособленных к вычислению.

Внешне это выглядит как объявлениеобъектов, заранее известных в языке, и представление разных форм,45Л.В. ГородняяОсновы функционального программированиявычисление которых обладает определенной спецификой.Выполнение программы устроено как интерпретация данных,представляющих выражения, имеющие значение. Ниже приведенысинтаксические правила для обычных конструкций, к которымотносятся идентификаторы, переменные, константы, аргументы, формыи функции. (Правила упорядочены по сложности взаимосвязи формул.)идентификатор ::= атомИдентификатор — это подкласс атомов, используемых при именованиинеоднократно используемых объектов программы — функций ипеременных.

Предполагается, что идентифицируемые объектыразмещаются в памяти так, что по идентификатору их можно найти.Понятие "идентификатор" выделено для того, чтобы по мере развитияопределения атома не требовалось на все виды атомов искусственнораспространять семантику вычислений. (Например, у Бекуса в егознаменитой статье про "бутылочное горлышко" рассматриваются числакак представление операций доступа [20].)форма ::= константа| переменная| (функция аргумент ...

)| (COND (форма форма) (форма форма) ... )константа ::= (QUOTE S-выражение)| 'S-выражениепеременная ::= идентификаторПеременная — это подкласс идентификаторов, которым сопоставленомногократно используемое значение, ранее вычисленное в подходящемконтексте. Подразумевается, что одна и та же переменная в разныхконтекстах может иметь разные значения.Таким образом, класс форм — это объединение класса переменных иподкласса списков, начинающихся с QUOTE,COND или спредставления некоторой функции.46Л.В.

ГородняяОсновы функционального программированияаргумент ::= формаФорма — это выражение, которое может быть вычислено. Форма,представляющая собой константу, выдает эту константу как своезначение. В таком случае нет необходимости в вычислениях,независимо от вида константы.

Константные значения могут бытьлюбой сложности, включая вычислимые выражения. Чтобы избежатьдвусмысленности, предлагается константы изображать как результатспециальнойфункцииQUOTE,блокирующейвычисление.Представление констант с помощью QUOTE устанавливает границу,далее которой вычисление не идет. Использование апострофа "'" —просто сокращенное обозначение для удобства набора внешних форм.Константные значения аргументов характерны при тестировании идемонстрации программ.Если форма представляет собой переменную, то ее значением должнобыть S-выражение, связанное с этой переменной до моментавычисления формы. ( Динамическое связывание, в отличие оттрадиционного правила, требующего связывания к моменту описанияформы, т.е.

статическое связывание.)Третья ветвь определения гласит, что можно написать функцию, затемперечислить ее аргументы, и все это как общий список заключить вскобки.Аргументы представляются формами. Это означает, что допустимыкомпозиции функций. Обычно аргументы вычисляются в порядкевхождения в список аргументов. Позиция "аргумент" выделена для того,чтобы было удобно в дальнейшем локализовывать разные схемыобработки аргументов в зависимости от категории функций.Аргументом может быть любая форма, но метод вычисления аргументовможет варьироваться.

Функция может не только учитывать типобрабатываемого данного, но и управлять временем обработки данных,принимать решения по глубине и полноте анализа данных,обеспечивать продолжение счета при исключительных ситуациях и т.п.Последняя ветвь определяет формат условного выражения. Согласноэтому формату условное выражение строится из размещенных вдвухэлементном списке синтаксически различимых позиций для47Л.В. ГородняяОсновы функционального программированияпропозициональных термов и обычных форм.

Двухэлементные спискииз определения условного выражения рассматриваются какпредставление предиката и соответствующего ему S-выражения.Значение условного выражения определяется перебором предикатов попорядку, пока не найдется форма, значение которой отлично от NIL,что означает логическое значение "истина".

Строго говоря, такая формадолжна быть найдена непременно. Тогда вычисляется S-выражение,размещенное вторым элементом этого же двухэлементного списка.Остальные предикаты и формы условного выражения не вычисляют(логика Маккарти), их формальная корректность или определенность невлияют на существование результата.Разница между пропозициональными и обычными формамизаключается лишь в трактовке их результатов.

Любая форма можетиграть роль предиката.функция ::= название| (LAMBDA список_переменных форма)| (LABEL название функция)список_переменных ::= (переменная ... )название ::= идентификаторНазвание — это подкласс идентификаторов, определение которыххранится в памяти, но оно может не подвергаться влиянию контекставычислений.Таким образом, класс функций — это объединение класса назва-ний иподкласса трехэлементных списков, начинающихся с LAMBDA илиLABEL.Функция может быть представлена просто именем. В таком случае еесмысл должен быть заранее известен. Функция может быть введена спомощью лямбда-выражения, устанавливающего соответствие междуаргументами функции и связанными переменными, упоминаемыми втеле ее определения (в определяющей ее форме).

Форма из определенияфункции может включать переменные, не включенные в лямбда-список,— так называемые свободные переменные. Их значения должны48Л.В. ГородняяОсновы функционального программированияустанавливаться на более внешнем уровне. Если функция рекурсивна,то следует объявить ее имя с помощью специальной функции LABEL.(Используемая в примерах DEFUN, по существу, совмещает эффектыLABEL и LAMBDA.)форма ::= переменная| (QUOTE S-выражение)| (COND (форма форма) ...

(форма форма))| (функция аргумент ... )аргумент ::= формапеременная ::= идентификаторфункция ::= название| (LAMBDA список_переменных форма)| (LABEL название функция)список_переменных ::= (переменная ... )название ::= идентификаторидентификатор ::= атомS-выражение ::= атом| (S-выражение . S-выражение)| (S-выражение ...)атом ::= БУКВА конец_атомаконец_атома ::= пусто| БУКВА конец_атома| цифра конец_атомаУниверсальная функцияИнтерпретация или универсальная функция — это функция, котораяможет вычислять значение любой формы, включая формы, сводимые квычислению произвольной заданной функции, применяемой каргументам, представленным в этой же форме, по доступному49Л.В.

ГородняяОсновы функционального программированияописанию данной функции. (Конечно, если функция, которой предстоитинтерпретироваться, имеет бесконечную рекурсию, интерпретациябудет повторяться бесконечно.)Определим универсальную функцию eval от аргумента expr —выражения, являющегося произвольной вычислимой формой языкаЛисп.Универсальная функция должна предусматривать основные видывычисляемых форм, задающих значения аргументов, а такжепредставления функций, в соответствии со сводом приведенных вышеправил языка.

Характеристики

Тип файла
PDF-файл
Размер
994,97 Kb
Тип материала
Высшее учебное заведение

Список файлов учебной работы

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7045
Авторов
на СтудИзбе
259
Средний доход
с одного платного файла
Обучение Подробнее