TY - JOUR
T1 - Type safe incremental rebinding
AU - Ancona, Davide
AU - Giannini, Paola
AU - Zucca, Elena
N1 - Publisher Copyright:
© 2015 Cambridge University Press.
PY - 2017/2/1
Y1 - 2017/2/1
N2 - We extend the simply-typed lambda-calculus with a mechanism for dynamic and incremental rebinding of code. Fragments of open code which can be dynamically rebound are values. Differently from standard static binding, which is done on a positional basis, rebinding is done on a nominal basis, that is, free variables in open code are associated with names which do not obey α-equivalence. Moreover, rebinding is incremental, that is, just a subset of names can be rebound, making possible code specialization, and rebinding can even introduce new names. Finally, rebindings, which are associations between names and terms, are first-class values, and can be manipulated by operators such as overriding and renaming. We define a type system in which the type for a rebinding, in addition to specify an association between names and types (similarly to record types), is also annotated. The annotation says whether or not the domain of the rebinding having this type may contain more names than the ones that are specified in the type. We show soundness of the type system.
AB - We extend the simply-typed lambda-calculus with a mechanism for dynamic and incremental rebinding of code. Fragments of open code which can be dynamically rebound are values. Differently from standard static binding, which is done on a positional basis, rebinding is done on a nominal basis, that is, free variables in open code are associated with names which do not obey α-equivalence. Moreover, rebinding is incremental, that is, just a subset of names can be rebound, making possible code specialization, and rebinding can even introduce new names. Finally, rebindings, which are associations between names and terms, are first-class values, and can be manipulated by operators such as overriding and renaming. We define a type system in which the type for a rebinding, in addition to specify an association between names and types (similarly to record types), is also annotated. The annotation says whether or not the domain of the rebinding having this type may contain more names than the ones that are specified in the type. We show soundness of the type system.
UR - https://www.scopus.com/pages/publications/84929447906
U2 - 10.1017/S0960129515000109
DO - 10.1017/S0960129515000109
M3 - Article
SN - 0960-1295
VL - 27
SP - 94
EP - 122
JO - Mathematical Structures in Computer Science
JF - Mathematical Structures in Computer Science
IS - 2
ER -