Scala-Virtualized: linguistic reuse for deep embeddings.
Saved in:
| Title: | Scala-Virtualized: linguistic reuse for deep embeddings. |
|---|---|
| Authors: | Rompf, Tiark1, Amin, Nada1, Moors, Adriaan1, Haller, Philipp1, Odersky, Martin1 |
| Source: | Higher-Order & Symbolic Computation. Mar2012, Vol. 25 Issue 1, p165-207. 43p. |
| Subjects: | Scala (Computer program language), Domain-specific programming languages, Embedded computer systems, Virtual machine systems, Programming language semantics |
| Abstract: | Scala-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 embedded 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. [ABSTRACT FROM AUTHOR] |
| Copyright of Higher-Order & Symbolic Computation is the property of Springer Nature and its content may not be copied or emailed to multiple sites without the copyright holder's express written permission. Additionally, content may not be used with any artificial intelligence tools or machine learning technologies. However, users may print, download, or email articles for individual use. This abstract may be abridged. No warranty is given about the accuracy of the copy. Users should refer to the original published version of the material for the full abstract. (Copyright applies to all Abstracts.) | |
| Database: | Engineering Source |
| FullText | Text: Availability: 0 |
|---|---|
| Header | DbId: egs DbLabel: Engineering Source An: 101133728 AccessLevel: 6 PubType: Academic Journal PubTypeId: academicJournal PreciseRelevancyScore: 0 |
| IllustrationInfo | |
| Items | – Name: Title Label: Title Group: Ti Data: Scala-Virtualized: linguistic reuse for deep embeddings. – Name: Author Label: Authors Group: Au Data: <searchLink fieldCode="AR" term="%22Rompf%2C+Tiark%22">Rompf, Tiark</searchLink><relatesTo>1</relatesTo><br /><searchLink fieldCode="AR" term="%22Amin%2C+Nada%22">Amin, Nada</searchLink><relatesTo>1</relatesTo><br /><searchLink fieldCode="AR" term="%22Moors%2C+Adriaan%22">Moors, Adriaan</searchLink><relatesTo>1</relatesTo><br /><searchLink fieldCode="AR" term="%22Haller%2C+Philipp%22">Haller, Philipp</searchLink><relatesTo>1</relatesTo><br /><searchLink fieldCode="AR" term="%22Odersky%2C+Martin%22">Odersky, Martin</searchLink><relatesTo>1</relatesTo> – Name: TitleSource Label: Source Group: Src Data: <searchLink fieldCode="JN" term="%22Higher-Order+%26+Symbolic+Computation%22">Higher-Order & Symbolic Computation</searchLink>. Mar2012, Vol. 25 Issue 1, p165-207. 43p. – Name: Subject Label: Subjects Group: Su Data: <searchLink fieldCode="DE" term="%22Scala+%28Computer+program+language%29%22">Scala (Computer program language)</searchLink><br /><searchLink fieldCode="DE" term="%22Domain-specific+programming+languages%22">Domain-specific programming languages</searchLink><br /><searchLink fieldCode="DE" term="%22Embedded+computer+systems%22">Embedded computer systems</searchLink><br /><searchLink fieldCode="DE" term="%22Virtual+machine+systems%22">Virtual machine systems</searchLink><br /><searchLink fieldCode="DE" term="%22Programming+language+semantics%22">Programming language semantics</searchLink> – Name: Abstract Label: Abstract Group: Ab Data: Scala-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 embedded 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. [ABSTRACT FROM AUTHOR] – Name: AbstractSuppliedCopyright Label: Group: Ab Data: <i>Copyright of Higher-Order & Symbolic Computation is the property of Springer Nature and its content may not be copied or emailed to multiple sites without the copyright holder's express written permission. Additionally, content may not be used with any artificial intelligence tools or machine learning technologies. However, users may print, download, or email articles for individual use. This abstract may be abridged. No warranty is given about the accuracy of the copy. Users should refer to the original published version of the material for the full abstract.</i> (Copyright applies to all Abstracts.) |
| PLink | https://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=egs&AN=101133728 |
| RecordInfo | BibRecord: BibEntity: Identifiers: – Type: doi Value: 10.1007/s10990-013-9096-9 Languages: – Code: eng Text: English PhysicalDescription: Pagination: PageCount: 43 StartPage: 165 Subjects: – SubjectFull: Scala (Computer program language) Type: general – SubjectFull: Domain-specific programming languages Type: general – SubjectFull: Embedded computer systems Type: general – SubjectFull: Virtual machine systems Type: general – SubjectFull: Programming language semantics Type: general Titles: – TitleFull: Scala-Virtualized: linguistic reuse for deep embeddings. Type: main BibRelationships: HasContributorRelationships: – PersonEntity: Name: NameFull: Rompf, Tiark – PersonEntity: Name: NameFull: Amin, Nada – PersonEntity: Name: NameFull: Moors, Adriaan – PersonEntity: Name: NameFull: Haller, Philipp – PersonEntity: Name: NameFull: Odersky, Martin IsPartOfRelationships: – BibEntity: Dates: – D: 01 M: 03 Text: Mar2012 Type: published Y: 2012 Identifiers: – Type: issn-print Value: 13883690 Numbering: – Type: volume Value: 25 – Type: issue Value: 1 Titles: – TitleFull: Higher-Order & Symbolic Computation Type: main |
| ResultId | 1 |