000197945 001__ 197945
000197945 005__ 20190316235904.0
000197945 0247_ $$2doi$$a10.1007/s10990-013-9096-9
000197945 022__ $$a1388-3690
000197945 037__ $$aARTICLE
000197945 245__ $$aScala-Virtualized: Linguistic Reuse for Deep Embeddings
000197945 269__ $$a2013
000197945 260__ $$bSpringer Verlag$$c2013
000197945 336__ $$aJournal Articles
000197945 520__ $$aScala-Virtualized extends the Scala language to better support hosting embedded DSLs. Scala is an expressive language that provides a flexible syntax, type-level computation using implicits, and other features that facilitate the development of em- bedded DSLs. However, many of these features work well only for shallow embeddings, i.e. DSLs which are implemented as plain libraries. Shallow embeddings automatically profit from features of the host language through linguistic reuse: any DSL expression is just as a regular Scala expression. But in many cases, directly executing DSL programs within the host language is not enough and deep embeddings are needed, which reify DSL programs into a data structure representation that can be analyzed, optimized, or further translated. For deep embeddings, linguistic reuse is no longer automatic. Scala-Virtualized defines many of the language’s built-in constructs as method calls, which enables DSLs to redefine the built-in semantics using familiar language mechanisms like overloading and overriding. This in turn enables an easier progression from shallow to deep embeddings, as core language constructs such as conditionals or pattern matching can be redefined to build a reified representation of the operation itself. While this facility brings shallow, syntactic, reuse to deep embeddings, we also present examples of what we call deep linguistic reuse: combining shallow and deep components in a single DSL in such a way that certain features are fully implemented in the shallow embedding part and do not need to be reified at the deep embedding level.
000197945 6531_ $$aCode generation
000197945 6531_ $$aDomain-specific languages
000197945 6531_ $$aLinguistic reuse
000197945 6531_ $$aLanguage virtualization
000197945 700__ $$0243345$$aRompf, Tiark$$g185682
000197945 700__ $$0246589$$aAmin, Nada$$g164625
000197945 700__ $$aMoors, Adriaan
000197945 700__ $$0240993$$aHaller, Philipp$$g172057
000197945 700__ $$0241835$$aOdersky, Martin$$g126003
000197945 773__ $$jAugust-September$$q1-43$$tHigher Order and Symbolic Computation
000197945 8564_ $$uhttps://github.com/TiarkRompf/scala-virtualized$$zURL
000197945 8564_ $$s469666$$uhttps://infoscience.epfl.ch/record/197945/files/hosc2013.pdf$$yPreprint$$zPreprint
000197945 909C0 $$0252187$$pLAMP$$xU10409
000197945 909CO $$ooai:infoscience.tind.io:197945$$pIC$$particle$$qGLOBAL_SET
000197945 917Z8 $$x164625
000197945 937__ $$aEPFL-ARTICLE-197945
000197945 973__ $$aEPFL$$rREVIEWED$$sPUBLISHED
000197945 980__ $$aARTICLE