No abstract available.
Proceeding Downloads
Cross-platform language design in Scala.js (keynote)
Have you ever wondered what is the secret sauce of Scala.js? What defines Scala.js, above all else, is the overarching will to make it cross-platform. A cross-platform language is both portable—most source code cross-compiles and behaves the same way on ...
A domain-specific language for microservices
A common architectural pattern for complex online systems is a collection of “microservices” communicating via RPC interfaces. A service architecture provides autonomy for teams to develop, deploy, and operate system modules without ...
Parser combinators for context-free path querying
Transparent integration of a domain-specific language for specification of context-free path queries (CFPQs) into a general-purpose programming language as well as static checking of errors in queries may greatly simplify the development of applications ...
Garnishing parsec with parsley
Parser combinators are a clean and powerful abstraction which can provide reasonably efficient means of parsing a grammar into a form which the programmer desires. They remain close to the domain of grammars whilst at the same time offering enormous ...
Path dependent types with path-equality
While the Scala type system provides expressive features like objects with type members, the lack of equality checking between path-dependent types prohibits some programming idioms. One such an example is abstract domain combinators in implementing ...
κDOT: scaling DOT with mutation and constructors
Scala unifies concepts from object and module systems by allowing for objects with type members which are referenced via path-dependent types. The Dependent Object Types (DOT) calculus of Amin et al. models only this core part of Scala, but does not ...
Initialization patterns in Dotty
Safe object initialization is important to avoid a category of runtime errors in programming languages. In this paper, we provide a case study of the initialization patterns on the Dotty compiler. In particular, we find that calling dynamic-dispatching ...
Truly abstract interfaces for algebraic data types: the extractor typing problem
Pattern matching enables inspecting algebraic data types, but typically prevents hiding the implementation of the matched algebraic data type. In Scala, instead, extractors also allow pattern matching on non-algebraic data types and invoking methods on ...
Interflow: interprocedural flow-sensitive type inference and method duplication
Scala heavily relies on a number of object-oriented abstractions to support its feature-rich collections library. There are known techniques that optimize those abstractions away in just-in-time (JIT) compilers, but applying them in the ahead-of-time (...
Extending Scala with records: design, implementation, and evaluation
This paper presents a design for extensible records in Scala satisfying design goals such as structural subtyping, typesafe polymorphic operations, and separate compilation without runtime bytecode generation. Using new features of Scala 3, the design ...
Index Terms
- Proceedings of the 9th ACM SIGPLAN International Symposium on Scala
Recommendations
Acceptance Rates
Year | Submitted | Accepted | Rate |
---|---|---|---|
Scala '19 | 6 | 5 | 83% |
Overall | 6 | 5 | 83% |