Efficient Dynamic Type Checking of Heterogeneous Sequences

From LRDE

Abstract

This report provides detailed background of our development of the rational type expression, concrete syntax, regular type expression, and a Common Lisp implementation which allows the programmer to declarative express the types of heterogeneous sequences in a way which is natural in the Common Lisp language. We present a brief theoretical background in rational language theory, which facilitates the development of rational type expressionsin particular the use of the Brzozowski derivative and deterministic automata to arrive at a solution which can match a sequence in linear time. We illustrate the concept with several motivating examples, and finally explain many details of its implementation.

Documents

Efficient Dynamic Type-checking of Heterogeneous Sequences

Authors

Jim Newton, Akim Demaille, Didier Verna

Article submitted to ELS 9 2016

ELS 2016 Article Presentation Slides

Project Report

Report

Source code

You may download the source code from LRDE gitlab mirror


Dfa81.png

Bibtex (lrde.bib)

@TechReport{	  newton.16.rte.report,
  author	= {Jim Newton},
  title		= {Efficient Dynamic Type Checking of Heterogeneous
		  Sequences},
  institution	= {LRDE},
  year		= 2016,
  number	= {2005D002},
  address	= {Paris, France},
  month		= feb,
  annote	= {This technical report corresponds to the publication
		  newton.16.edtchs},
  abstract	= { This report provides detailed background of our
		  development of the rational type expression, concrete
		  syntax, regular type expression, and a Common Lisp
		  implementation which allows the programmer to declarative
		  express the types of heterogeneous sequences in a way which
		  is natural in the Common Lisp language. We present a brief
		  theoretical background in rational language theory, which
		  facilitates the development of rational type expressions,
		  in particular the use of the Brzozowski derivative and
		  deterministic automata to arrive at a solution which can
		  match a sequence in linear time. We illustrate the concept
		  with several motivating examples, and finally explain many
		  details of its implementation. }
}