Publication View

Abstract (2008)

Abstract
Most programming languages adopt static binding, but for distributed programming an exclusive reliance on static binding is too restrictive: dynamic binding is required in various guises, for example when a marshalled value is received from the network, containing identifiers that must be rebound to local resources. Typically it is provided only by ad-hoc mechanisms that lack clean semantics. In this paper we adopt a foundational approach, developing core dynamic rebinding mechanisms as extensions to the simply-typed call-by-value λ-calculus. To do so we must first explore refinements of the call-by-value reduction strategy that delay instantiation, to ensure computations make use of the most recent versions of rebound definitions. We introduce redex-time and destruct-time strategies. The latter forms the basis for a λmarsh calculus that supports dynamic rebinding of marshalled values, while remaining as far as possible statically-typed. We sketch an extension of λmarsh with concurrency and communication, giving examples showing how wrappers for encapsulating untrusted code can be expressed. Finally, we show that a high-level semantics for dynamic updating can also be based on the destruct-time strategy, defining a λupdate calculus with simple primitives to

Publication details
Download http://citeseerx.ist.psu.edu/viewdoc/summary?doi=?doi=10.1.1.110.636
Source http://www.cs.umd.edu/~mwh/papers/dynbind-journal.pdf
Contributors CiteSeerX
Repository CiteSeerX - Scientific Literature Digital Library and Search Engine (United States)
Keywords Contents
Type text
Language English
Relation 10.1.1.7.2483, 10.1.1.120.7560, 10.1.1.35.3542, 10.1.1.45.1770, 10.1.1.20.8615, 10.1.1.36.220, 10.1.1.17.5273, 10.1.1.68.5127, 10.1.1.33.7802, 10.1.1.23.9636, 10.1.1.22.8100, 10.1.1.17.1993, 10.1.1.102.4702, 10.1.1.21.6752, 10.1.1.1.7195, 10.1.1.107.4845, 10.1.1.3.9157, 10.1.1.37.2463, 10.1.1.132.8155, 10.1.1.133.2149, 10.1.1.47.1578, 10.1.1.23.5548, 10.1.1.52.161, 10.1.1.14.6402, 10.1.1.100.3665, 10.1.1.70.4808, 10.1.1.31.7708, 10.1.1.29.4790, 10.1.1.10.1721, 10.1.1.5.9679, 10.1.1.61.9966, 10.1.1.130.8088, 10.1.1.25.2298, 10.1.1.115.6623, 10.1.1.138.4949