It is quite natural to define a software language as an extension of a base language. A compiler builder usually prefers to work on a representation in the base language, while programmers prefer to program in the extended language. As we define a language extension, we want to ensure that desugaring it into the base language is provably sound. We present a lightweight approach to verifying soundness by embedding the base language and its extensions in Haskell. The embedding uses the final tagless style, encoding each language as a type class. As a result, combination and enhancement of language extensions are expressed in a natural way. Soundness of the language extension corresponds to well-typedness of the Haskell terms, so no extra tool...
Language-centered software engineering requires language technology that (i) handles the full class ...
We review witnesses, an emerging Haskell idiom, and suggest some terminology. We then introduce open...
For automation it is important to express the knowledge of the experts in a form that is understood ...
It is quite natural to define a software language as an extension of a base language. A compiler bui...
Language extensions introduce high-level programming constructs that protect programmers from low-le...
Extension languages enable users to expand the functionality of an application without touching its ...
Extensible programming languages such as SugarJ or Racket enable programmers to introduce customary ...
We propose a framework for specification of programming language semantics, abstract and concrete sy...
Extensible programming languages such as SugarJ or Racket en-able programmers to introduce customary...
Experiences are presented from a new case study of embedding domain-specific languages in the lazy f...
Compilers for ML and Haskell use intermediate languages that incorporate deeply-embedded assumptions...
Abstract. Typed programming languages offer safety guarantees that help programmers write correct co...
The evaluation strategies of programming languages can be broadly categorised as strict or lazy. A c...
This thesis contains a description of an implementation of an extended subset of the programming lan...
Programmers need convenient syntax to write elegant and concise programs. Consequently, the Haskell ...
Language-centered software engineering requires language technology that (i) handles the full class ...
We review witnesses, an emerging Haskell idiom, and suggest some terminology. We then introduce open...
For automation it is important to express the knowledge of the experts in a form that is understood ...
It is quite natural to define a software language as an extension of a base language. A compiler bui...
Language extensions introduce high-level programming constructs that protect programmers from low-le...
Extension languages enable users to expand the functionality of an application without touching its ...
Extensible programming languages such as SugarJ or Racket enable programmers to introduce customary ...
We propose a framework for specification of programming language semantics, abstract and concrete sy...
Extensible programming languages such as SugarJ or Racket en-able programmers to introduce customary...
Experiences are presented from a new case study of embedding domain-specific languages in the lazy f...
Compilers for ML and Haskell use intermediate languages that incorporate deeply-embedded assumptions...
Abstract. Typed programming languages offer safety guarantees that help programmers write correct co...
The evaluation strategies of programming languages can be broadly categorised as strict or lazy. A c...
This thesis contains a description of an implementation of an extended subset of the programming lan...
Programmers need convenient syntax to write elegant and concise programs. Consequently, the Haskell ...
Language-centered software engineering requires language technology that (i) handles the full class ...
We review witnesses, an emerging Haskell idiom, and suggest some terminology. We then introduce open...
For automation it is important to express the knowledge of the experts in a form that is understood ...