English

GOOL: A Generic Object-Oriented Language (extended version)

Programming Languages 2019-11-28 v1

Abstract

We present GOOL, a Generic Object-Oriented Language. It demonstrates that a language, with the right abstractions, can capture the essence of object-oriented programs. We show how GOOL programs can be used to generate human-readable, documented and idiomatic source code in multiple languages. Moreover, in GOOL, it is possible to express common programming idioms and patterns, from simple library-level functions, to simple tasks (command-line arguments, list processing, printing), to more complex patterns, such as methods with a mixture of input, output and in-out parameters, and finally Design Patterns (such as Observer, State and Strategy). GOOL is an embedded DSL in Haskell that can generate code in Python, Java, C# and C++.

Keywords

Cite

@article{arxiv.1911.11824,
  title  = {GOOL: A Generic Object-Oriented Language (extended version)},
  author = {Jacques Carette and Brooks MacLachlan and W. Spencer Smith},
  journal= {arXiv preprint arXiv:1911.11824},
  year   = {2019}
}

Comments

Long version of paper at PEPM 2020