Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...
Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...
Топ:
Определение места расположения распределительного центра: Фирма реализует продукцию на рынках сбыта и имеет постоянных поставщиков в разных регионах. Увеличение объема продаж...
Когда производится ограждение поезда, остановившегося на перегоне: Во всех случаях немедленно должно быть ограждено место препятствия для движения поездов на смежном пути двухпутного...
Интересное:
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Уполаживание и террасирование склонов: Если глубина оврага более 5 м необходимо устройство берм. Варианты использования оврагов для градостроительных целей...
Принципы управления денежными потоками: одним из методов контроля за состоянием денежной наличности является...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
| Конструкция | Примеры представле- ния | Трактовка | Пояснение |
| Данные | |||
| Встроенная константа | Nil | Представление функции без параметров, результатом кото- рой является пустой список | Результаты таких функций хранятся непосредственно в памяти. Их полу- чение не требует вычислений |
| Элементар- ное значе- ние | List X Atom | Представление неопределен- ной функции, которая может быть в дальнейшем использо- вана как значение переменной или представление конкретной функции | |
| Идентифи- катор | A X ATOMIC IDENT | Представление функции, ар- ность, категория и определе- ние которой задаются раз- ными средствами связывания атомов с их смыслом. (Связы- вание аргументов с парамет- рами при вызове функции или именование определения) | |
| Именован- ная кон- станта | A | Представление функции без параметров, в любой позиции программы выдающей ранее заданное значение | |
| Переменная | X | Представление функции без параметров, результат которой может зависеть от контекста, например, от области видимо- сти при вызове других функ- ций | |
![]() | |||
| |||
| Конструкция | Примеры представле- ния | Трактовка | Пояснение |
| S-выражение | (A. B) (A B C. D) | Могут представлять вызов функции | Может быть аргу- ментом или резуль- татом функции |
| Список | NIL (A B) (A (B C) D) | Может быть пред- ставлением любой составной формы | |
| Составное константное значение | ‘(A B C) ‘(A (B C) D) ‘(А. В) | Результат унарной функции QUOTE, препятствующей вы- числению своего аргумента: (QUOTE (A B C)) (QUOTE (A (B C) D)) (QUOTE (А. В)) | Блокировка вычис- лений, в частности для организации отложенных дей- ствий |
| Операции | CAR CDR CONS ATOM EQ | Встроенные функции | Базовые средства обработки данных |
| Организация процессов | |||
| Вызов функ- ции | (FN LIST-FRM) | Представление выражения в виде списка из представления функции и представлений ее параметров в виде выражений. При необходимости результат функции вычисляется с помо- щью универсальной функции APPLY | Общая схема вы- числений. При вызове функ- ции происходит ло- кальное связывание аргументов со зна- чениями парамет- ров, сохраняемое в стеке |
| Выражение (форма) | X FNAME (CAR ‘(a b c)) | Представление аргумента уни- версальной функцией EVAL, пригодное для вычисления зна- чения этого аргумента | Вывод значений по представлению вы- ражений |
| Ветвление | (COND ((EQ X A) Y) ((ATOM X) D) -- -- (T Z)) | Специальная мультифункция над произвольным числом аргу- ментов, каждый из которых яв- ляется списком из представле- ний предиката и соответствую- щей ему ветви | Метод организации частичных вычисле- ний |
![]() | |||
| |||
| Конструк- ция | Примеры представ- ления | Трактовка | Пояснение |
| Определе- ние безы- мянной функции | (LAMBDA (x y) (expr x y)) | Результат специальной бинар- ной функции LAMBDA, пер- вый аргумент которой – спи- сок аргументов определяемой функции, а второй представ- ляет выражение, задающее ее тело | Конструирование представления функции |
| Именова- ние локаль- ного опре- деления | (LABEL NAME DEF) | Результат специальной бинар- ной функции LABEL, связы- вающей новое имя, заданное первым аргументом, с пред- ставлением функции, задан- ной вторым аргументом, в ко- тором это связывание локали- зовано | Поддержка много- кратного примене- ния функции |
| Вычисле- ние | (EVAL expr) | Результат универсальной функции EVAL, анализирую- щей структуру представления выражения и выбирающей ме- тод вычисления значения вы- ражения | Поддержка управ- ления ходом вы- числений, включая возобновление от- ложенных дей- ствий |
| Примене- ние функ- ции к за- данным ар- гументам | (APPLY fn args ...) | Вспомогательная функция, выполняющая вызов FN при вычисленных аргументах | Часть интерпрета- тора |
|
|
|
| Конструкция | Примеры пред- ставления | Трактовка | Пояснение |
| Pure Lisp | |||
| Вывод данных | (PRINT X) | Представление тож- дественной псевдо- функции PRINT с побочным эффек- том, заключающемся в размещении экви- валентного ее аргу- менту текста на экране или в задан- ном файле | (PRINT X) = X Результат совпа- дает с аргумен- том, поэтому раз- мещение в любой позиции про- граммы вывода данных может не влиять на ход вы- полнения про- граммы |
| Ввод данных | (READ) | Представление псевдо-функции без параметров READ, побочным эффектом которой является конструирование представления дан- ного, эквивалент- ного строке, набран- ной на консоли или размещенной в за- данном файле | Включение в про- грамму средств ввода данных позволяет управ- лять ходом вы- числений без ре- дактирования текста про- граммы, что поз- воляет повысить удобство и надежность от- ладки |
| Обработка прерываний, ошибок, исключений, неожиданно- стей и т.п. | (ERROR N “message” continuation) | Представление псевдо-функции, обеспечивающей для заданного номера со- бытия поясняющее сообщение и воз- можное продолже- ние процесса вычис- лений. По умолча- нию – восстанов- ление начального контекста | Поддержка вы- числений в стиле бэктреккинга |
| Конструкция | Примеры представления | Трактовка | Пояснение |
| Элементарное значение, псевдо-атом | 123 3.14 4/5 «строка» | Представление само- определимой функ- ции без аргументов, результатом которой является ее соб- ственное представле- ние | Результаты такой функции хра- нятся непосред- ственно в памяти. Их получение не требует вычисле- ний |
| Операции над числами | (+ 1 2 3 4) (* 1 2 3 4) (– 1 2 3 4) (/ 1 2 3 4) | Представление муль- тифункций над про- извольным числом аргументов. Аддитивные опера- ции при пустом списке аргументов вырабатывают число 0. Мультипликатив- ные – число 1 | (+ 1 2 3 4) = 1+2+3+4 (* 1 2 3 4) = 1*2*3*4 (– 1 2 3 4) = 1–2–3–4 (/ 1 2 3 4) = 1/2/3/4 |
| Арифметиче- ские выраже- ния | (+ (* 3 5 D)
(– A 8)
(/ 1 2 X))
| Представление ре- зультатов вычисле- ний не требует опре- деления типов реа- лизуемых чисел, зависящих от фор- мата кода или длины машинного слова | (/ 1 2) = ½ Длина целых чи- сел не ограни- чена, результат целочисленного деления может быть представлен как дробь без по- тери точности, точность веще- ственных может быть задана |
| Lisp 1.5 | |||
| Компиляция функций | (COMPILE …) | Специальная функ- ция, побочный эф- фект которой заклю- чается в создании кода функции, оттес- няющего ее символь- ное определение | Оптимизация от- лаженных функ- ций ради скоро- сти выполнения |
|
| Конструкция | Примеры представления | Трактовка | Пояснение |
| Структуро- разрушающие функции | (RPLACA X Y) (RPLACD X Y) (CONC AL BL)
| Представление функций с побоч- ными эффектами, вызванными исполь- зованием памяти ар- гументов при кон- струировании ре- зультата, при наличии их чисто функциональных эк- вивалентов: (RPLACA X Y) = (CONS Y (CDR X)) (RPLACD X Y) = (CONS (CAR X) Y) (CONC AL BL) = (APPEND AL BL) | Реализационный базис раскрутки СП. Поддержка опти- мизации и син- хронизации неза- висимых участ- ков программы, возникающих при вычислении рекурсивных функций, незави- симых парамет- ров, выполнении итераций и т. п. |
| Именование глобальной функции | (DEFINE NAME DEF)
| Результат специаль- ной бинарной функ- ции DEFINE, связы- вающей новое имя, заданное первым ар- гументом, с глобаль- ным определением функции, представ- ленным вторым ар- гументом | Поддержка ком- бинаторики неза- висимых опреде- лений функций |
| Императив- ные вычисле- ния | (PROG (V..)….) | Специальная функ- ция, выполняющая последовательное вычисление выраже- ний, рассматривае- мых как операторы. Результат выделен функцией RETURN или определен по- следним оператором |
| Конструкция | Примеры представления | Трактовка | Пояснение |
| Clisp | |||
| Конструиро- вание пред- ставления именованной глобальной функции | (DEFUN NAME ARGS DEF) | Результат специаль- ной функции DE- FUN, конструирую- щей по списку аргу- ментов и определяю- щему выражению новое глобальное определение функ- ции и связывает его с именем | Области действия имен и поддержка иерархии наследуемых определений |
| Область видимости рабочих переменных | (LET LIST EXPR) | Специальная функ- ция LET строит об- ласть видимости, в которой опреде- лены значения рабо- чих переменных со- гласно списку LIST, используемых при вычислении выраже- ния EXPR | |
| Область видимости рабочих переменных | (LET* LIST EXPR) | Допускает взаимную рекурсию | |
| Область видимости вспомогатель- ных функций | (FLET LIST REXPR) | Специальная функция FLET строит область видимости, в которой определены вспомо- гательные функции согласно списку LIST, используемых при вычислении выраже- ния EXPR | |
| Конструиро- вание специ- альных функ- ций | (MACRO...) | Специальная функ- ция MACRO создает определения новых специальных функ- ций, обрабатываю- щих представления своих параметров без их предваритель- ного вычисления | Поддержка альтернативных методов вычислений |
|
| Конструкция | Примеры представления | Трактовка | Пояснение |
| Цикл | (LOOP …) | Специальная функ- ция, один из пара- метров которой яв- ляется предназна- ченным для многократного вы- числения телом цикла, а остальные используются при управлении кратно- стью вычисления тела цикла | Поддержка традиционных схем представле- ния программ |
| Параллельные вычисления | (MULTIPLY …) | Специальная функ- ция, выполняющая вычисление своих параметров в произ- вольном порядке, не заданном заранее. Значения всех ре- зультатов доступны объемлющим функ- циям | Подготовка па- раллельных вы- числений |
Управление обработкой информации в лямбда-исчислении осуществля- ется в рамках иерархии свободных и связанных переменных, реализуемых с помощью таблицы соответствия символов и их смысла. Обработка пред- ставляется посредством правил интерпретации выражений, построенных из всюду определенных функций, аргументы которых могут быть упорядочены. По степени общности такое построение сравнимо с аксиоматической теорией множеств.
|
![]() |
19 Магариу Н. А. Язык программирования АПЛ. М.: Радио и связь. 96 с.
|
Теоретически достаточно исследовать чисто функциональные лаконич- ные представления программ, поведение которых не зависит от побочных эф- фектов. Результат программы на константных значениях может быть получен системой редукций ее представления. Процессы применения редукций можно выбирать в зависимости от стратегии вычислений и реализовывать как простую подстановку текстов или списков.
На практике основная трудоемкость связана с отладкой программы на базе конкретной системы программирования, поддерживающей определен- ную стратегию вычислений или дающей возможность явного управления хо- дом выполнения программы в зависимости от данных. Чисто функциональ- ная программа при оптимизирующей компиляции может быть сведена к ее формальному результату без генерации исполнимого кода.
По отношению к проблемам определения языков и систем программиро- вания (СП) основные идеи ФП сложились при реализации языка Lisp и в ра- ботах Венской лаборатории IBM в начале 1960-х годов. Эти идеи оказались трудными для восприятия в пионерскую эпоху программирования, но в настоящее время их актуальность растет, что показывает рост популярности концептуально близкой пары Clang-LLVM. Это и обуславливает целесообраз- ность фундаментальных исследований в сфере функционального программи- рования, проектирования и моделирования.
С конца 1970-х годов появились Lisp-процессоры, доказавшие, что неэф- фективность функционального программирования обусловлена характери- стиками оборудования, а не стилем программирования. Функциональные мини-языки хорошо показали себя и при решении задач аппаратного уровня. Все это превращает ФП в практичный и перспективный инструментарий. Та- кая схема подтверждается самой историей развития диалектов языка Lisp и родственных ему языков программирования.
|
|
отложенные действия (lazy evaluation).
|
Здание функционального программирования получает логическое завер- шение на уровне определения функций высших порядков, удобных для син-
|
|
| Алгоритм | Примечание |
| n –1= F(n, 0, 0) где F(x, y, z) = если (x = 1) то 0 иначе если ((y +1) = x) то z иначе F(x, y +1, z +1) | Сведение к вызову вспомогательной функции. Вспомогательная функция. Объявление значения от 1. Проверка достижения предыдущего числа. Шаг рекурсии с наращиванием параметров |
Пример 19. Выражение «–1» через «+1»
Решение получилось через введение формально усложненной функции F со вспомогательными параметрами. Такой метод противоречит интуитив- ному стремлению к монотонности при движении от нового к привычному. Вместо общепринятого привычного нисходящего подхода, задача решена
![]() |
20 Клини С. К. Введение в метаматематику. М.: Изд-во ИЛ, 1957.
восходящим методом, через определение более общей функции, вопреки ме- тодологии структурного программирования.
|
Важно отметить, что преимущества ФП обусловлены не только семанти- кой используемых языков программирования, но и особенностями его под- держки в системах программирования:
– представления данных (чисел, строк, имен, списков) обычно не ограни- чены по длине;
– полностью автоматизировано первичное и повторное распределение па- мяти – «сборка мусора»;
– выделен комплекс базовых средств для программирования без побоч- ных эффектов в памяти программы, достаточный для представления ленивых вычислений, отображений и других функций высших порядков;
– встроены средства управления вычислениями, расширяющие возмож- ности СП в направлении основных парадигм программирования.
|
|
|
Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...
Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...
Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!