Тут не исправить уже ничего, Господь, жги! Войти !bnw Сегодня Клубы
Привет, TbI — HRWKA! 1252.0 пользователей не могут ошибаться!
?7016
прекрасное6456
говно5928
говнорашка5513
хуита4740
anime3079
linux2669
music2648
bnw2607
рашка2589
log2377
ололо2274
дунч1892
pic1816
сталирасты1494
bnw_ppl1460
быдло1441
украина1439
дыбр1239
гімно1158

Новая ракетка вышла.

Roughly, hygienic macro expansion is desirable for the same reason as lexical scope: both enable local reasoning about binding so that program fragments compose reliably. The analogy suggests specifying hygienic macro expansion as a kind of translation into lexical-scope machinery. In that view, variables must be renamed to match the mechanisms of lexical scope as macro expansion proceeds. A specification of hygiene in terms of renaming accommodates simple binding forms well, but it becomes unwieldy for recursive definition contexts (Flatt et al. 2012, section 3.8), especially for contexts that allow a mixture of macro and non-macro definitions. The renaming approach is also difficult to implement compactly and efficiently in a macro system that supports “hygiene bending” operations, such as datum->syntax, because a history of renamings must be recorded for replay on an arbitrary symbol.

In a new macro expander for Racket, we discard the renaming approach and start with a generalized idea of macro scope, where lexical scope is just a special case of macro scope when applied to a language without macros. Roughly, every binding form and macro expansion creates a scope, and each fragment of syntax acquires a set of scopes that determines binding of identifiers within the fragment. In a language without macros, each scope set is identifiable by a single innermost scope. In a language with macros, identifiers acquire scope sets that overlap in more general ways.

http://www.cs.utah.edu/plt/scope-sets/index.html

#U252BB (0) / @ninesigns / 3991 день назад
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.