Главная » Просмотр файлов » John Harrison - Введение в функциональное программирование

John Harrison - Введение в функциональное программирование (1108517), страница 8

Файл №1108517 John Harrison - Введение в функциональное программирование (John Harrison - Введение в функциональное программирование) 8 страницаJohn Harrison - Введение в функциональное программирование (1108517) страница 82019-04-28СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Еёпостроение начинается с определения формальных правил конструирования22Глава 2. Лямбда-исчисление2.4. Комбинаторывыражений, в которые не входит λ-абстракция, но входят комбинаторы. Далеевместо α, β и η-преобразований вводятся правила преобразования для выражений,включающих комбинаторы, например, K x y −→ x. Такая теория будет иметьмножество аналогий в традиционном λ-исчислении, например, теорема ЧёрчаРоссера оказывается справедливой и для приведённого выше определения редукции.Кроме того, полностью устраняются сложности со связыванием переменных. Темне менее, мы считаем полученный формализм не слишком интуитивным, посколькукомбинаторные выражения нередко бывают весьма неясными.Помимо важной роли, которую комбинаторы играют в логике, они также имеюти определённый практический потенциал. Как мы уже кратко упоминали (подробноеизложение ожидается в следующих разделах), λ-исчисление может считатьсяпростым функциональным языком, основой для более развитых и практическиприменимых языков, наподобие ML.

Теорема о комбинаторной полноте даётоснование говорить, что выражения λ-исчисления могут быть «скомпилированы» в«машинный код» комбинаторов. Эта терминология из теории языковых процессоровоказывается на самом деле вполне уместной. Комбинаторы применялись каксредство реализации функциональных языков, в том числе и на уровне аппаратногообеспечения, предназначенного для вычисления комбинаторных выражений.Дополнительная литератураЭнциклопедическая, но при этом доступная работа по теории λ-исчисления —Barendregt (1984). Другой популярный учебник — Hindley and Seldin (1986).

Обе этикниги содержат доказательства результатов, которые мы приводим без обоснования.Вторая часть Gordon (1988) представляет собой упрощенное изложение предмета,ориентированное на его применение в прикладной математике. Существенная частьданного курса базируется на последней работе.Упражнения1. Найдите нормальную форму терма (λx x x. x) a b c.2. Пусть twice = λf x. f (f x). Каков интуитивный смысл twice? Найдитенормальную форму twice twice twice f x. (Напомним, что операцияприменения функции левоассоциативна.)3. Найдите терм t такой, что t −→ t.

Можно ли утверждать, что терм имеетβнормальную форму тогда и только тогда, когда из t −→ t0 следует t ≡α t0 ?4. В каком случае справедливо s[t/x][u/y] ≡α s[u/y][t/x]?5. Постройте выражение, равносильное λfкомбинаторы I, K и S.x. f (xx), используя лишь6. Найдите единственный комбинатор X такой, что все λ-термы эквивалентнытермам, построенным композицией X и переменных. Указание: положите A =λp. p K S K, а затем рассмотрите A A A и A (A A).232.4. КомбинаторыГлава 2.

Лямбда-исчисление7. Докажите, что терм X является комбинатором неподвижной точки тогда итолько тогда, когда он представляет собой неподвижную точку комбинатора Gтакого, что G = λy m. m(y m).24Глава 3λ-исчисление как языкпрограммирования«Проблема разрешимости» (также известная как Entscheidungsproblem) былаодним из основных предметов изучения логиков 1930-х. Формулировка задачитакова: существует ли некоторая систематическая (механическая) процедураопределения истинности утверждения в логике первого порядка? Положительныйответ на этот вопрос имел бы фундаментальное философское и, возможно,практическое значение: принципиальную возможность решить большое количестворазнообразных сложных математических задач исключительно при помощинекоторого фиксированного метода (в настоящий момент используется терминалгоритм) без привлечения дополнительных творческих усилий.Очевидно, что проблема разрешимости непроста, поскольку требует точногоопределения понятия «систематической» либо «механической» процедуры на языкематематики.

В работе Turing (1936) даётся, вероятно, лучший анализ этой задачи.В ней также утверждается, что механическими можно считать действия, которыемогут быть в принципе выполнены достаточно умным клерком, не обладающимзнаниями об объекте этих действий. Абстрагирование поведения такого клеркапривело в дальнейшем к известному понятию «машины Тьюринга». Вопреки тому,что эта концепция была чисто математической, а роль исполнителя действийпервоначально предназначалась человеку, мы можем также рассматривать машинуТьюринга как очень простой компьютер. Несмотря на простоту, эта машина способнапроделать любые вычисления, доступные реальным машинным исполнителям.1Вычислительную модель, эквивалентную по своей полноте машине Тьюринга,принято называть полной по Тьюрингу либо Тьюринг-полной.Почти одновременно с Тьюрингом, другими авторами были предложенынезависимые определения понятия «механической процедуры», большая частькоторых оказалась эквивалентной машине Тьюринга по своей вычислительнойполноте.

В частности, лямбда-исчисление, первоначально предназначенное нароль формальной основы математики, также возможно трактовать и как языкпрограммирования, в котором исполнение программ сводится к последовательности1В действительности, машина Тьюринга обладает большей вычислительной полнотой за счетотсутствия ограничений на объем доступной памяти.

Строго говоря, любой существующийкомпьютер алгоритмически эквивалентен конечному автомату, но для удобства принято такжеполагать объем его памяти бесконечным.25Глава 3. Лямбда-исчисление как язык программированиябета-преобразований. В самом деле, Чёрч ещё до публикации работ Тьюрингасделал предположение, что множество операций, представимых в рамкахлямбда-исчисления, является формальным эквивалентом интуитивного понятия«механической процедуры». Этот постулат был в дальнейшем назван тезисом Чёрча.В работе Church (1936) показано, что из этого тезиса следует неразрешимостьEntscheidungsproblem.

Тьюринг впоследствии доказал, что множество функций,представимых в рамках лямбда-исчисления, в точности совпадает со множествомфункций, вычислимых машиной Тьюринга. Этот результат послужил ещё однимдоводом в пользу справедливости тезиса Чёрча.С точки зрения современных программистов, программы для машины Тьюрингамогут считаться достаточно примитивной разновидностью машинных кодов. Всамом деле, очень вероятно, что именно машины Тьюринга, в особенности такназываемая «универсальная машина»,2 оказали решающее влияние на разработкусовременных компьютерных архитектур с хранимой программой; впрочем, степеньэтого влияния и его природа продолжают служить объектом дискуссий (Robinson 1994).

Примечательно то, что некоторые другие альтернативные определения«механической процедуры», часто сформулированные задолго до появленияэлектронных компьютеров, достаточно точно соответствуют реальным методампрограммирования. Например, алгоритмы Маркова (формальная вычислительнаямодель, популярная в Советском Союзе) могут считаться основой языкапрограммирования SNOBOL. В дальнейшем нас будет интересовать аналогичноевлияние лямбда-исчисления на эволюцию функциональных языков.Язык LISP, второй (после FORTRAN) старейший язык высокого уровня,использует некоторые понятия лямбда-исчисления, в частности, обозначение(LAMBDA · · ·) для безымянных функций, но в целом ему не соответствует.

Всамом деле, как ранние версии языка, так и некоторые его современные диалектыиспользуют принцип динамического связывания имён переменных, несовместимыйс лямбда-исчислением (подробное обсуждение см. ниже). Более того, в раннихверсиях отсутствовала приемлемая поддержка понятия функций высших порядков,зато имелся существенный объем императивных конструкций. Но несмотря на это,LISP заслуживает внимания как первый функциональный язык программирования,в котором также впервые были реализованы многие сопутствующие возможности,такие как автоматическое распределение памяти и «сборка мусора».Влияние лямбда-исчисления на языки программирования приобрело реальныйвес с появлением в 1960-х работ Лэндина и Стрейчи. В частности, Лэндин показал,что множество свойств распространённых в то время (императивных) языковможет успешно анализироваться в терминах лямбда-исчисления, к примеру, понятиеобластей видимости переменных в Algol 60.

В работе Landin (1966) было предложеноиспользовать лямбда-исчисление как основу языков программирования, примеромчего послужил функциональный язык ISWIM («If you See What I Mean»—досл.«Если вам понятно, о чём речь»). Эта публикация завоевала в дальнейшем широкуюизвестность и стала отправной точкой в разработке многих других языков, нашедшихпрактическое применение.Язык ML ведёт свою историю с появления в роли метаязыка (откуда,2Универсальной называется машина Тьюринга, способная воспроизводить работу любой другой,т.

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

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

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

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