Personal tools

Programmatic Manipulation of Common Lisp Type Specifiers

From LRDE

Jump to: navigation, search

Abstract

In this article we contrast the use of the s-expression with the BDD (Binary Decision Diagram) as a data structure for programmatically manipulating Common Lisp type specifiers. The s-expression is the de facto standard surface syntax and also programmatic representation of the type specifier, but the BDD data structure offers advantages: most notably, type equivalence checks using s-expressions can be computationally intensive, whereas the type equivalence check using BDDs is a check for object identity. As an implementation and performance experimentwe define the notion of maximal disjoint type decomposition, and discuss implementations of algorithms to compute it: a brute force iteration, and as a tree reduction. The experimental implementations represent type specifiers by both aforementioned data structures, and we compare the performance observed in each approach.

Documents

See also the Technical Report with many more details.

Bibtex (lrde.bib)

@InProceedings{	  newton.17.els,
  author	= {Jim Newton and Didier Verna and Maximilien Colange},
  title		= {Programmatic Manipulation of {C}ommon {L}isp Type
		  Specifiers},
  booktitle	= {European Lisp Symposium},
  year		= 2017,
  lrdestatus	= accepted,
  address	= {Brussels, Belgium},
  month		= apr,
  abstract	= {In this article we contrast the use of the s-expression
		  with the BDD (Binary Decision Diagram) as a data structure
		  for programmatically manipulating Common Lisp type
		  specifiers. The s-expression is the de facto standard
		  surface syntax and also programmatic representation of the
		  type specifier, but the BDD data structure offers
		  advantages: most notably, type equivalence checks using
		  s-expressions can be computationally intensive, whereas the
		  type equivalence check using BDDs is a check for object
		  identity. As an implementation and performance experiment,
		  we define the notion of maximal disjoint type
		  decomposition, and discuss implementations of algorithms to
		  compute it: a brute force iteration, and as a tree
		  reduction. The experimental implementations represent type
		  specifiers by both aforementioned data structures, and we
		  compare the performance observed in each approach.},
  note		= {accepted}
}