Главная » Просмотр файлов » Р.У. Себеста - Основные копцепции языков программирования (2001)

Р.У. Себеста - Основные копцепции языков программирования (2001) (1160794), страница 154

Файл №1160794 Р.У. Себеста - Основные копцепции языков программирования (2001) (Р.У. Себеста - Основные копцепции языков программирования (2001)) 154 страницаР.У. Себеста - Основные копцепции языков программирования (2001) (1160794) страница 1542019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Результатом функции ОЕт является значение последнего выражения, принадлежащего телу функции. Следующий пример иллюстрирует использование функции ЕЕТ: (ОЕГ1(4Е (с(оаогасз гостя а Ь с) (1.ЕТ ( (гоос рагс очег 2а (/ (ЯОВТ (- (* Ь Ь (* 4 а с))) (* 2 а))) (ж1пця Ь очег 2а (/ (- О Ь) (* 2 а))) ) (О1ЯРЕАт' (+ ж1пця Ь очег 2а гооС рагС очег 2а) ) ~ ТНЕ) (О1ЯР' АУ (-ж1пця Ь очег 2а гооС раг. очег 2а)) ) Функция О1яРОАТ вполне подходит для использования в функции суэас(гасас гоося, поскольку мы хотим, чтобы эта функция выводила свои два результата. Функция ОЕТ создает новую локатьную статическую область видимости почти тем же способом, что и оператор с(ес1аге в языке Ада. Именованные компоненты функции ОЕТ аналогичны операторам присваивания.

но их можно использовать только в новой области видимости функции ЕЕТ. Более того, их нельзя связать с новыми значениями в функции 1,ЕТ. Слово ОЕТ в действительности является простым сокращением ОА(ЧВОА-выражения. Следующие два выражения эквивалентны: (ЕЕТ (а1рЬа 7) (* 5 а1рЬа)) ((1ЛМВОА (а1рЬа) (' 5 а1рЬа)) 7) В первом выражении число 7 связывается с переменной а1рца: во втором — число 7 связывается с переменной а1рпа через параметр ЫИВОА-выражения.

599 ) 4.5. Введение в язык Бс)зеве 14.$.6. Функциональные формы В этом разделе описываются две распространенные математические функциональные формы, предусмотренные в языке Яспегле, а именно: композиция и применить-ко-всем. 14.5.6. 1. Комлозиция функций Композиция функций — единственная функциональная форма, предусмотренная в исходном варианте языка Е!ЯР, Все последующие диалекты языка (.15Р, включая язык Ясйеше. также содержат ее. К композиции функций, по существу, сводится работа функции ЕЧАР. Все списки, не заключенные в кавычки.

интерпретируются как вызовы функций, требующие, чтобы их параметры вычислялись первыми. Это правило рекурсивно применяется к наименьшему списку в любом выражении и представляет собой именно то, что означает композиция функций. Композиция функций иллюстрируется следующим примером; САК (СРК ' (А В С) ) ) возвращает ( С ) (САК (САК '((А В) В С))) возвращает А (СРК (САК '((А В С) Р))) возвращает (В С) ()4РРЬ? (САК '(() В С))) возвращает ()Т (СО(ЧЯ (САК ' (А В) ) (СРК ' (А В) ) ) возвращает (А В) Заметим. что имена функций во внутренних вызовах не заключены в кавычки, поскольку они должны вычисляться, а не обрабатываться как литеральные данные.

14.5.6.2. Функциональная форма лримвните-ко-ясвм Наиболее распространенными функциональными формами, предусмотренными в популярных функциональных языках. являются вариации математических функциональных форм применить-ко-всем. Простейшей из них является форма варсаг, которая имеет два параметра — функцию и список. Форма варсаг применяет заданную функцию к каждому элементу заданного списка н возвращает список результатов этих применений. Определение функции варсаг на языке Яспеше приведено ниже: (РЕЕ1НЕ (варсаг бцп 11я) (СОБР (()401.1? 1зя) '()) (ЕРЯЕ (СОВЯ (1цп (САК 1гя)) (варсаг бцп [СРК 11я)))) )) Отметим простую форму функции варсаг, выражающей сложную функциональную форму.

Это является следствием большой выразительной силы языка Ясеневе. В качестве примера использования функции варсаг предположим, что мы хотим возвести в куб все элементы некоторого списка. Мы можем сделать это следующим образом: парса (МАЛЯРА (пцв) (* пав пив пцв)) '(3 4 2 6)) Эта функция вернет в качестверезультатаспнсок (27 64 8 216). Заметим, что в этом примере первый параметр функции варсаг является РАИВРА- выражением.

Когда функция ВАР вычисляет это ЬАИВРА-выражение, она создает функцию. имеющую ту же форму. что и любая встроенная функция, за исключением того, что новая функция будет безымянной. В приведенном выше выражении эта безымянная функция немедленно применяется к каждому элементу списка, являющегося параметром. а результат возвращает в виде списка. Глава 14. Функциональные языки программирования 14.5.У. Функции ддзи создании кода Тот фалт. что программы и данные имеют одинаковую структуру, используется при создании программ. Поскольку пользовательские программы вызывают функцию ЕуАЬ, они могут создавать другие программы и немедленно выполнять их. Олин из простейших примеров этого процесса касается числовых атомов.

Большинство систем языка Яслеше имеют функцию для числового атома с именем +, получаюшего любое количество числовых атомов в качестве аргументов и возврашаюшего их сумму. Например, (+ 3 7 10 2) возврашает 22. Наша задача состоит в следуюшелс предположим, что в программе есть список числовых атомов и нужно вычислить их сумму. Мы не можем применить функцию ь непосрелственно к списку, поскольку функция + может получать только атомарные параметры. а ие список числовых атомов.

Функция. которая повторно добавляет первый элемент списка к сумме элементов его остальной части с помошью функций САЕ и СРА. используя рекурсию для перемещения по списку. приведена ниже: РЕГ1)(Е (асЫег 11я) (СОБР (()ЧРЬЬ? 11я) О) (ЕЬЯЕ (+ САН 11я) (асЫег (СРА 11Я)))) )) Альтернативное решение задачи состоит в написании функции, которая строит вызов функции + с параметрами, представленными в подходящей форме. Это можно слелать, используя функцию СО))5 для вставки атома + в список чисел.

Новый список можно передать функции ЕЧАЬ для выполнения вычислений. как показано ниже: (РЕГ1ИЕ (асЫег 11я) (СО))Р ( (ХРЬЬ? 11я) О) (ЕЬЯЕ (ЕЧАЬ (СОНЯ '+11я))) )) Заметим, что перел именем функции "плюс" стоит кавычка, которая предотвращает ее вычисление функцией ЕЧАЬ при вычислении функции СО)ЧЯ. Рассмотрим вызов функции асЫе г: (асЫег '*3 4 б) ) Он заставляет зту функцию создать список (+ 3 4 б) затем этот список передается функции е((Аь, вызываюшей функцию ь и возврашаюшей результат 1 3. Во всех ранних версиях языка Ясйете функция Е~ГАЬ вычисляет выражения в самой внешней области видимости программы.

В современной версии языка Яс)зеше— Яй)зете 4 — для функции ЕУАЬ требуется второй параметр, указываюший область видимости, в которой должно быть вычислено выражение. Для простоты мы оставили параметр, указывающий область видимости, за рамками нашего примера и не рассматриваем область видимости имен. 14.5. Введение в язык бс)зеве 601 14.5.8. Императивные свойства языка Зсйепзе Язык Ясйеше, полобно другим современным диалектам языка Е15Р, обладает несколькими свойствами, взятыми от императивных языков.

Например, имена могут связываться со значениями, и эти связи в дальнейшем могут изменяться. Это делается с помощью функции БЕТ .', как показано в слелуюшем примере: (БЕ ! Р1 3. 141593 ) Функция ЯЕТ! возврашает значение, которое она связывает с именем. В функциональной версии языка ЫЯР списки не могут изменяться. Они обрабатываются по частям с помощью функций САК и СРК, но заданный список остается неизменным.

Для изменения списка может понадобиться свойство императивного языка — побочный эффект вызова функции. Язык Бсйеше имеет две функции, создающие такие побочные эффекты, а именно: ЯЕТ-САВ! и БЕТ-СРВ! . Рассмотрим следуюшие примеры: (РЕГ1(ЧЕ РБТ (11ЯТ 'А 'В) ) (ЯЕТ-САР! 1аг 'С) (ЯЕТ-СРВ! Рвс '(Р)) Функция БЕт-САВ! изменяет список, связанный с именем 1вг, с (А В) на (с Р).

Функция ЯБТ-СРВ! изменяетсписок,связанный с именем 1вг, с (С В) на (с Р). Императивные свойства языка Яспеше, описанные выше, были внесены в него для повышения эффективности, однако отклонение от функционального программирования также имеет свою цену. Программы становится труднее отлаживать и эксплуатировать из-за возможного совмешения имен и побочных эффектов, позволяюших идентичным вызовам функций давать разные результаты в разное время.

Рассмотрим следуюший фрагмент кода: (РЕГ1(ЧЕ соцпс О) (РЕГ1г)Е (1пс соцпс пцмЬег) (яЕТ! соипс (ч соипг пивЬег)) ) Хотя следующие два вызова функции дпс соцпг совершенно идентичны, они приводят к разным результатам: (Тпс соцпс 1) 0 (зпс соцпс 1) 1 1Я.б. Язык СОНМОМ $Я$Р Язык СОММОЙ Е(ЯР (5(ее!е, 1984) был призван объединить свойства нескольких диалектов языка ЫЯР, созданных в начале 1980-х годов, включая язык Бслеве, в единый язык. Будучи комбинацией этих свойств, язык СОММОН ЫЯР довольно велик и сложен. Его основа, однако, — это исходный язык ЫЯР, так что синтаксис, элементарные функции и природа унаследованы от него. Поняв, что иногда динамический обзор данных придает программе гибкость, а также оценив простоту статического обзора данных, разработчики языка СОММОЙ ЫЯР ре- Глава 14.

Функциональиыв языки программирования шили позволить применение обоих зтих способов. По умолчанию область видимости переменной является статической. но с помощью обаявления переменной в качестве "специальной" ее можно сделать динамической. Список свойств языка СОММОХ Ь)ЯР велик: большое количество типов и структур данных, включая записи. массивы, комплексные числа и символьные строки; мощные операции ввода и вывода; пакеты лля обаелинения в модули наборов функций и данных, а также управление доступом; императивные свойства языка Яспеше — особенно функции, аналогичные функциям ЯЕТ-САК! и ЯЕТ-СОК! . Язык СОММОН Ь)ЯР и большинство лиалектов языка ЫЯР, за исключением языка Ясйеше, содержат функцию РКОС, позволяющую упорядочивать последовательность выполнения операторов, как зто принято в императивных языках.

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

Тип файла
DJVU-файл
Размер
9,5 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

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