Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
DM-6_lec.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
1.32 Mб
Скачать

Способы реализации рекурсии.

В рассмотренных нами методах (в редукции графов и в суперкомбинаторах)

рекурсия осуществляется по именам, т.е. имеем дело с именованными выражениями.

Пример.

ƒac n: if n=Ø 1 n*ƒac(n-1)

λn.if n= Ø 1 n*ƒac(n-1)

1)Редукция графа:

Разворачиваем тело графа.

Суперкомбинаторы (рекурсия):

letrec ƒ=N(ƒ) M

letrec ƒac=(λn.if n= Ø 1 n*ƒac(n-1))(ƒac3)(λƒac.(ƒac3))(λn.if n= Ø 1 n*ƒac(n-1))

Контрольные вопросы

  1. Приведите общую схему реализации аппликативных языков.

  2. Какие новые конструкции введены в расширенное λ–исчисление по сравнению с традиционным?

  3. Дайте определение глубины связывания переменной.

  4. Постройте и редуцируйте граф разбора для выражения (λxy.+ x y)7((λx.x)12)

  5. Приведите к суперкомбинаторному виду выражение (λx.+ x ((λy.x)5))

  6. Какими средствами организуется рекурсия для суперкомбинаторных выражений?

Компиляция в коды абстрактных машин.

ФЯ→λ-выражение→код де Брейна→категориальная комбинаторная логика

код категориальных абстрактных машин (КАМ-код)

Кодирование по де Брейну.

Определение.

Пусть есть λ-выражение S и связное вхождение в него переменной х. Построим дерево разбора выражения S.

Глубиной связывания вхождения переменной х называется число λ-узлов дерева разбора между вхождением переменной и ее связыванием.

Пример.

λх.+х1 глубина связывания х равна 0.

λх.λу.+ху глубина связывания х равна 1, глубина связывания у равна 0.

λх. +х((λу.+ух)2)

0↑ 0↑1↑

Обозначение:

1. Заменим имена переменных на их глубину связывания, такие числа называются числами де Брейна.

Глубина связывания переменных обозначается n- число де Брейна. n .

xi→ n

2. const c →’c

3. MN = S(M,N)-аппликация

4. λ.M = Λ(М) - λ-абстракция.

Примеры кодирования по де Брейну:

1 . λх.λу.((+х)у) →Λ(Λ(S(S(’+,1),0)))

@ @↑

2. (λх.+(( λх.x)3)x)4→S(Λ(S(S(’+,S(Λ(0),’3)), 0)),’4).

Вычисления по де Брейну: преобразования в соответствии с формализмами Де Брейна.

Замена: λ ~ Λ(), аппликация ~ S( , ), n ~ n.

Определение.

1)Пустая среда ( ) - есть среда,

2)если ρ - среда, х - переменная, то пара (ρ,х) есть среда

3) других сред нет.

Для хранения переменных используется среда.

Есть два способа получить значение переменной из среды:

  • по имени

  • по номеру (Fst,Snd).

По соглашению - среда конечна.

Среда наращивается справа. Самая внешняя переменная имеет 0-е значение числа

Де Брейна.

Определение.

Среда - упорядоченное множество пар “ переменная, значение”.

Кодирование в среде (ρ):

Шаг кодирования

const

[ c] ρ→c - константа, вычисленная в среде равна самой себе => 0(ρ, d) = d

среда

↓переменная n+1(ρ,d) = nρ

[x]ρ→ ρ(x) - х – переменная, ρ(x) - ее значение в среде ρ.

[(MN)] ρ→(([M] ρ)([N] ρ))

[ λх.М]ρ→[M]( ρ,x)

новая среда

Предполагается, что если в выражении есть свободные переменные, то они

явным образом находятся в среде.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]