Date and time:
Thursday, April 15, 2010 - 15:50 - 17:30
These are the papers will be presented during this session:
- Automatic refactorings for Scala programs
Ilya Sergey, Dave Clarke, Alexander Podkhalyuzin
Scala is a programming language that combines the object-oriented and functional programming paradigms. Dependent types, higher-order functions and implicit conversions bring new ideas and challenges when implementing code refactoring. In this paper, we give an overview of the automatic refactorings for Scala programs offered by the IntelliJ IDEA programming environment. We consider the main differences between well-known automatic refactorings implemented for Scala with their Java analogues, and give short descriptions of the underlying pitfalls and techniques. Finally, we provide a short survey of refactorings that are not implemented yet but might be useful for practical software development in Scala.
- Building a Kermeta Compiler using Scala: an Experience Report
François Fouquet, Olivier Barais, Jean-Marc Jezequel
This paper presents an experience report of building a Kermeta compiler using Scala as a target language. Kermeta is a domain specific language inspired by language such Eiffel and OCL and designed for specifying the operational semantics of meta-models. This engineering work, initially motivated by performance issues of our Kermeta interpreter is an excuse to study and discuss some paradigm that mismatches between Scala and Kermeta. This paper mainly discusses how we can manage open classes, multiple inheritance, design by contracts, model type paradigms, etc. using Scala.
- Type-safe SQL embedded in Scala
Christoph Wulf
In contrast to the industry's need of relational databases the interaction between programs and databases using the Structured Query Language is often inconvenient and error-prone. This paper offers an approach for embedded SQL statements in Scala with validation against the corresponding database schema and result type inference based on re-writing to plain JDBC code. It describes ideas of design and implementation.