Saint: an API-generic type-safe interpreter
Paper in proceeding, 2019

Many programs written in the functional programming language Haskell take advantage of its advanced type system. Haskell's type system is very expressive and allows us to write interesting programs without sacrificing type safety. Haskell programs that expose its API to an open world, however, are faced with the problem of dynamic type checking. Existing techniques that address this problem, such as Typeable and Dynamic, are often closed and difficult to extend. We have constructed an extensible library for describing APIs using annotated type representations. As a result, API calls can be interpreted in a type-safe manner without any extra programming effort. In addition, the user has full control over the universe of allowed types, which helps to catch any misconceptions in an early stage. We have applied our technique to connect a real-world DSL (GRACe) to a JavaScript GUI.

Interpreter

Lambda-calculus

Domain-specific language

Author

Maximilian Algehed

Chalmers, Computer Science and Engineering (Chalmers), Functional Programming

Patrik Jansson

Chalmers, Computer Science and Engineering (Chalmers), Functional Programming

Sólrún Einarsdóttir

Chalmers, Computer Science and Engineering (Chalmers), Functional Programming

Alex Gerdes

Student at Chalmers

University of Gothenburg

Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)

03029743 (ISSN) 16113349 (eISSN)

Vol. 11457 LNCS 94-113
978-3-030-18505-3 (ISBN)

19th International Symposium on Trends in Functional Programming, TFP 2018
Göteborg, Sweden,

Global systems Rapid Assessment tools through Constraint FUnctional Languages (GRACeFUL)

European Commission (EC) (EC/H2020/640954), 2015-02-01 -- 2018-01-31.

Centre of excellence for Global Systems Science (CoeGSS)

European Commission (EC) (EC/H2020/676547), 2015-10-01 -- 2018-09-30.

Areas of Advance

Information and Communication Technology

Subject Categories

Software Engineering

Computer Science

DOI

10.1007/978-3-030-18506-0_5

More information

Latest update

8/22/2019