2011
DOI: 10.1145/2076021.2048136
|View full text |Cite
|
Sign up to set email alerts
|

Virtual values for language extension

Abstract: This paper focuses on extensibility, the ability of a programmer using a particular language to extend the expressiveness of that language. This paper explores how to provide an interesting notion of extensibility by virtualizing the interface between code and data. A virtual value is a special value that supports behavioral intercession. When a primitive operation is applied to a virtual value, it invokes a trap on that virtual value. A virtual value contains multiple traps, each of which is a user-defined fu… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1

Citation Types

0
7
0

Year Published

2013
2013
2016
2016

Publication Types

Select...
5
2

Relationship

1
6

Authors

Journals

citations
Cited by 9 publications
(7 citation statements)
references
References 20 publications
0
7
0
Order By: Relevance
“…First, we manually combine the example test programs into a single file via concatenation (not shown). 4 DSLInfer uses the Ruby Intermediate Language (RIL) [19], a tool designed for exactly this kind of use, to parse in the example programs and replace each call m(args...) without an explicit receiver (i.e., a potential keyword call) with a call to dsl log(:m, stmt id, args...). Here, m is the method name, stmt id is the unique RIL statement id, and args are the original 4 No example uses side effects such that concatenation would be unsafe.…”
Section: Contracts For Dsl Structurementioning
confidence: 99%
See 1 more Smart Citation
“…First, we manually combine the example test programs into a single file via concatenation (not shown). 4 DSLInfer uses the Ruby Intermediate Language (RIL) [19], a tool designed for exactly this kind of use, to parse in the example programs and replace each call m(args...) without an explicit receiver (i.e., a potential keyword call) with a call to dsl log(:m, stmt id, args...). Here, m is the method name, stmt id is the unique RIL statement id, and args are the original 4 No example uses side effects such that concatenation would be unsafe.…”
Section: Contracts For Dsl Structurementioning
confidence: 99%
“…Proxies. Both Strickland et al [31] and Austin et al [4] present systems for proxying primitive values and interposing on their operations in JavaScript and Racket, respectively. Method shims in our implementation are inspired by Strickland et al's description of chaperones and impersonators for functional values.…”
Section: Related Workmentioning
confidence: 99%
“…Austin. [2], provide the basis for the JavaScript proxies used by this paper. Proxies such as these have been implemented in various other languages, such as Racket's surrogates [10] and Smalltalk [12] and Python's [24] doesNotUnderstand method as well as the language E [19] which is also written with object capabilities in mind.…”
Section: Related Workmentioning
confidence: 99%
“…Such objects have been called mirages [15] or virtual values [4], and have largely been studied in the context of behavioural intercession, or augmenting or replacing behaviours on existing objects. Holographic objects are similar in implementation, but focus instead on reproducing the behaviour of base objects with no actual base object available in the runtime to provide the base behaviour.…”
Section: Mirror-based Behavioral Intercessionmentioning
confidence: 99%