Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
21 ошибка прогр... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Имитационное мо... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Реклама
Сейчас на сайте
Гостей: 7
На сайте нет зарегистрированных пользователей

Пользователей: 13,367
новичок: lanoyac4
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Моделирование автовокзала + Отчет + Блок схема
База данных междугородних телефонных разговоров на Delphi
Метод половинного деления для нахождения корня уровнения на Turbo Pascal...

Ленивая реализация
Задача 17.1 Для примера определения
el n s = if n = 1 then (hd s) else el(n−1)(tl s) f i



выбрать суперкомбинаторы, дающие полностью ленивую реализа-
цию, и рассмотреть частный случай применения el 2.
Решение. Введем некоторые определения. Оказывается, что те выра-
жения, которые подвергаются повторным означиваниям, легко иден-
тифицируются. Это относится и ко всякому подвыражению λ-выра-
жения, которое не зависит от связанной переменной. Такие выраже-
ния называют свободными выражениями λ-выражения (по аналогии
с введением понятия свободной переменной). Свободные выраже-
ния, которые не являются частью никакого другого большего сво-
бодного выражения, называют максимальными свободными выра-
жениями λ-выражения (МСВ).
lazy--1. Рассмотрим схему трансляции. Минимальные свободные
выражения каждого λ-выражения преобразуются в параме-
тры соответствующего комбинатора. Остановимся на схе-
ме преобразования максимальных свободных выражений в па-
раметры соответствующего комбинатора.
lazy--2. Сначала установим, что такая схема трансляции значи-
ма, то есть получены настоящие комбинаторы и каждое λ-
выражение заменено на аппликативную форму. Рассмотрим
применимость новой схемы к отдельномуλ-выражению, тело
которого является аппликативной формой. Тот комбинатор,
который при этом возникает, должен удовлетворять опреде-
лению, так как его тело должно быть аппликативной формой
и не должно содержать свободных переменных. Тело комби-
натора заведомо будет аппликативной формой, поскольку оно
в свою очередь возникло из аппликативной формы (тела исход-
ного λ-выражения) путем подстановки вместо некоторых
выражений новых имен параметров. В нем не может быть
свободных переменных, поскольку любая свободная перемен-
ная должна быть частью некоторого максимального свобод-
ного выражения и поэтому подлежит удалению как часть па-
раметра. Все это подтверждает, что построен настоящий
комбинатор. Окончательный результат,который замещает
исходное λ-выражение, представляет собой новый комбина-
тор, приложенный к максимальным свободным выражениям,
каждое из которых - уже аппликативная форма. Вернемся к
исходной задаче.
lazy--3. Пусть максимальные свободные выражения для исходно-
го выражения
λs.if(= n 1)(hd s)(el(− n 1)(tl s))



представляют собой
(if(= n 1)) и (el(− n 1)).



Следовательно, новый комбинатор alpha определяется по-
средством

alpha p q s → p(hd s)(q(tl s)),



а определением el служит выражение
el = Y (λel.λn.alpha(if(= n 1))(el(− n 1))).



Продолжая этот процесс, получаем комбинаторыbetaиgamma,
задаваемые определениями:

beta el n → alpha(if(= n 1))(el(− n 1)),
gamma el → beta el,



откуда заключаем, что выражениеel эквивалентно(Y gamma),
то есть el = Y gamma, что совпадает с прежним результа-
том.
lazy--4. Рассмотрим частный случай, когда применяется (el 2):
el 2 → (Y gamma)2
→ gamma el 2
→ beta el 2
→ alpha(if(= 2 1))(el(− 2 1)).



Всегда при использовании (el 2) употребляются одни и те
же копии свободных выражений, следовательно, они означи-
ваются только один раз. Фактически получается редукция:
el 2 → alpha if −F ALSE(alpha if −T RUE(el(− 1 1))).



Более подробно:
el 2 → alpha(if(= 2 1))(el(− 2 1))
→ alpha(if −F ALSE)(el 1)
→ alpha(if −F ALSE)(alpha(if(= 1 1))(el(− 1 1)))
→ alpha(if −F ALSE)(alpha(if −T RUE)(el(− 1 1)))



Рассмотренная схема приводит к субоптимальным комбинаторам.
Контрольные вопросы.
1. Определите понятия “ленивое означивание в λ -исчислении” и
“полная ленивость” в языке КАФ и укажите связь между ними.
2. Что означает термин “МСВ λ -выражения”?
3. Что представляет собой окончательный результат замещения
исходного λ -выражения при полностью ленивой реализации
суперкомбинаторов?
Упражнение. Для выражения
f ac n = if n = 0 then 1 else n×(f ac(n−1))



осуществить полностью ленивую реализацию с помощью суперком-
бинаторов и вычислить f ac 3.
Опубликовал Kest May 13 2014 23:10:37 · 0 Комментариев · 3377 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Нет комментариев.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
Image Browser [Ис...
32 урока по Delphi
SysInfo [Исходник...
Платформа програм...
Шифрование по алг...
Flud Vkontakte.ru
Tag Игра "Пятнашк...
Род Стивенс. Delp...
index.php + мод ...
100 компонентов о...
TelBook
CwstatusBar
mmmJlabel
DCMintry
Основы Delphi. Пр...
HtmlLerz PRO
Керниган Б.В., Ри...
Создание отчетов ...
Tenis [Исходник н...
Программирование ...

Топ загрузок
Приложение Клие... 100774
Delphi 7 Enterp... 97832
Converter AMR<-... 20268
GPSS World Stud... 17014
Borland C++Buil... 14191
Borland Delphi ... 10290
Turbo Pascal fo... 7373
Калькулятор [Ис... 5984
Visual Studio 2... 5207
Microsoft SQL S... 3661
Случайные статьи
Вид основного меню...
Использование объе...
Рекурсивное вычисл...
Область диаграммы
Выбор сканирующего...
Статические элемен...
Развлечения на сай...
Простые свойства
Hello World на tur...
Приложения TCP/IP ...
Как подготовить пр...
Группа блоков созд...
Класс TTalk
Инвариант цикла ск...
Представление дере...
9.4. Принципы
Антисептик для дерева
UNLINK (ВЫВЕСТИ ИЗ...
В чём удобство онл...
Создание справки [...
Определить, какие ...
Туры в Осло, Норвегия
Типы сообщений про...
МОДЕЛЬ С АКТИВНОЙ ...
Обеспечение доступ...
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?