
Введение в контексты оценки в семантике программирования
7 июля 2025 г.Таблица ссылок
Введение
Перевод на последовательное исчисление
2.1 Арифметические выражения
2.2 Пусть привязки
2.3 Определения верхнего уровня
2.4 Алгебраические данные и типы кодов
2.5 первоклассные функции
2.6 Операторы управления
Оценка в контексте
3.1 Контексты оценки для развлечения
3.2 Сосредоточение внимания на оценке в сердечнике
Правила печати
4.1 Правила печати для развлечения
4.2 Правила печати для Core
4.3 Тип. Звукость
Понимание
5.1 Контексты оценки являются первым классом
5.2 Данные двойные до кодата
5.3 LET-связы
5.4 Трансформация случая
5.5 Прямой и косвенный потребители
5.6 Позвоните в запас, вызовов и eta-laws
5.7 Линейная логика и двойственность исключений
Связанная работа
Заключение, заявление о доступности данных и подтверждение
A. Взаимосвязь с последовательным исчислением
B. Правила набора развлечений
C. Оперативная семантика лейбла/goto
Ссылки
3 Оценка в контексте
В конце раздела 2.1 мы столкнулись с проблемой, которую мы еще не можем полностью оценить термин (⌜2⌝ ∗ ⌜4⌝) + ⌜5⌝ в веселье или его перевод 𝜇𝛼. + (𝜇𝛽. ∗ (⌜2⌝, ⌜4⌝; 𝛽), ⌜5⌝; 𝛼) в ядре с доступными нам правилами: мы застряли. В этом разделе мы наконец -то решаем эту проблему. Мы собираемся показать, как мы сможем оценить суб -фрэльс развлечений в разделе 3.1, но, поскольку в конечном итоге мы больше заинтересованы в составлении программ в ядро для оптимизации и сокращения этих программ, мы тратим больше времени на проблему для ядра в разделе 3.2.
3.1 Контексты оценки для развлечения
Проблема с оценкой термина (⌜2⌝ ∗ ⌜4⌝) + ⌜5⌝ заключается в том, что доступные правила позволяют только уменьшать прямые Redexes, а не Redexes, которые вложены где -то в пределах термина. Контексты оценки решают эту проблему, указав местоположения в пределах термина, которые находятся в положении оценки. В нашем примере термин (⌜2⌝ ∗ ⌜4⌝) + ⌜5⌝ может быть учтен в контексте оценки □ + ⌜5⌝ и Redex ⌜2⌝ ∗ ⌜4⌝. Затем мы можем использовать старые правила, чтобы уменьшить этот Redex до ⌜8⌝, а затем подключить этот результат к контексту оценки, который дает новый термин ⌜8⌝ + ⌜5⌝. Синтаксис контекстов оценки приведен в определении 3.1.
Эти контексты оценки также позволяют нам формально указать второе приблизительное правило оценки метки и конструкции GOTO из Раздела 2.6:
𝐸 [этикетка𝛼 {𝐸 ′ [goto(𝔱; 𝛼)]}] ⊲ 𝐸 [𝔱]
Здесь мы снова предполагаем, что 𝛼 не встречается свободным в 𝔱 и, кроме того, контекст внутренней оценки 𝐸 ′ не содержит другой конструкции метки. Для полной эксплуатационной семантики метки/goto нам также необходимо обрабатывать случаи, когда 𝛼 могут происходить бесплатно в 𝔱, и где 𝐸 ′ может содержать другие этикетки. В противном случае мы могли бы застрять во время оценки даже для закрытых и благоустроенных терминов, то есть теорема о прогрессе (см. Теорему 4.1 в разделе 4.3) не будет удерживать. Поскольку полная семантика, по сути, является предложением других классических операторов управления (i.p., Let/cc; также см. Обсуждение в разделе 5.3) и требует более формализма, мы не даем его здесь и вместо этого передаем заинтересованного читателя к краткому обсуждению в Приложении C.
С контекстами оценки у нас, наконец, работаем и точной оперативной семантики дляВеселье(Помимо приблизительных правил дляэтикеткаиgoto), который мы можем использовать, чтобы рассуждать о программах. К сожалению, чрезвычайно неэффективно реализовать оценщика, который использует контексты оценки, так как описано выше. Причиной этой неэффективности является то, что мы очень элегантно указали, как термин может быть учтен в контексте оценки и Redex, но оценщик, который реализует это поведение, должен искать следующее Redex после каждого шага оценки. В следующем разделе мы увидим, что у нас есть лучшее решение, как только наши программы будут скомпилированы вОсновнойПолем
Авторы:
(1) Дэвид Биндер, Университет Тюбингена, Германия;
(2) Марко Цшенке, Университет Тюбингена, Германия;
(3) Мариус Мюллер, Университет Тюбингена, Германия;
(4) Клаус Остерманн, Университет Тюбингена, Германия.
Эта статья есть
Оригинал