Size: a a a

Compiler Development

2021 July 02

K

Kir in Compiler Development
https://docs.racket-lang.org/ts-guide/occurrence-typing.html - что-то такое? Ну, как бы алгебраические типы + case...of и так это делают, например.

А что за NbE?
источник

AT

Alexander Tchitchigi... in Compiler Development
Normalization by Evaluation.
источник

AG

Alex Gryzlov in Compiler Development
популярный подход к реализации полной редукции (т.е. частичных вычислений под байндерами)
источник

AG

Alex Gryzlov in Compiler Development
используется в основном в пруверах для проверки дефиниционального равенства - два символьных выражения равны если имеют одну строгую нф
источник

A

Andrey in Compiler Development
А сами реализации подходят? Как я понимаю, occurrence typing - примерно то же самое, что и type narrowing, который есть например в TypeScript. И в тайпчекерах питона тоже используется, так что можно ещё на mypy и pyright посмотреть
источник

DP

Dmitry Popov in Compiler Development
a.k.a. Flow-sensitive typing
источник

DP

Dmitry Popov in Compiler Development
Про Flow и про local type inference статьи выходили.
источник
2021 July 03

DP

Dmitry Ponyatov in Compiler Development
а есть какие-то подвижки в LLVM по поводу поддержки операций над битовыми полями в регистрах и памяти на уровне генерации кода?
источник

DP

Dmitry Ponyatov in Compiler Development
Переслано от Dmitry Ponyatov
на самом деле это вопрос бэкенда LLVM (генерация кода для редких архитектур с битовой адресацией или бит.операций для остальных), и походу там конь не валялся
источник
2021 July 04

АП

Антон Пилипчук... in Compiler Development
Есть deep binding, есть lexical addressing.

Какие ещё есть стратегии variable lookup?
источник

K

Kir in Compiler Development
dynamic scope, lexical scope
источник

АП

Антон Пилипчук... in Compiler Development
ой, это не то. Я походу не точно выразился.

Меня интересует:

Как ещё можно делать variable lookup?
источник

K

Kir in Compiler Development
Подстановками (копировать тело определения, заменяя имя переменной на значение); тащить в эвалуаторе параметром мапу (имя -> значение); индексы де Бройна (de Brujin); locally nameless; bound от Кметта
источник

K

Kir in Compiler Development
bound, собственно, и есть реализация locally nameless
источник

АП

Антон Пилипчук... in Compiler Development
дык мапу надо таскать в любом случае, не?
источник

АП

Антон Пилипчук... in Compiler Development
как по мне, индексы де Бройна по сути то же что и lexical addressing
источник

AT

Alexander Tchitchigi... in Compiler Development
Scope graphs!!! 😄
источник

AT

Alexander Tchitchigi... in Compiler Development
Или Вы про лукап в рантайме?
источник

АП

Антон Пилипчук... in Compiler Development
мне интересно и то и другое
источник

AT

Alexander Tchitchigi... in Compiler Development
Ну, для compile-time я предложил, в рантайме -- смотря что пишем. В интерпретаторе таскаем environment в том или ином виде, в компиляторе -- разные есть варианты, смотря что за переменные.
источник