Difference between revisions of "Publications/newton.18.meta"

From LRDE

(Created page with "{{Publication | published = true | date = 2018-09-14 | authors = Jim Newton, Didier Verna | title = Recognizing heterogeneous sequences by rational type expression | booktitle...")
 
 
(One intermediate revision by the same user not shown)
Line 3: Line 3:
 
| date = 2018-09-14
 
| date = 2018-09-14
 
| authors = Jim Newton, Didier Verna
 
| authors = Jim Newton, Didier Verna
| title = Recognizing heterogeneous sequences by rational type expression
+
| title = Recognizing Heterogeneous Sequences by Rational Type Expression
 
| booktitle = Proceedings of the Meta'18: Workshop on Meta-Programming Techniques and Reflection
 
| booktitle = Proceedings of the Meta'18: Workshop on Meta-Programming Techniques and Reflection
 
| address = Boston, MA USA
 
| address = Boston, MA USA
Line 12: Line 12:
 
| lrdepaper = http://www.lrde.epita.fr/dload/papers/newton.18.meta.pdf
 
| lrdepaper = http://www.lrde.epita.fr/dload/papers/newton.18.meta.pdf
 
| lrdekeywords = rational language, types, lisp, reflection
 
| lrdekeywords = rational language, types, lisp, reflection
  +
| nodoi =
 
| type = inproceedings
 
| type = inproceedings
 
| id = newton.18.meta
 
| id = newton.18.meta
Line 17: Line 18:
 
@InProceedings<nowiki>{</nowiki> newton.18.meta,
 
@InProceedings<nowiki>{</nowiki> newton.18.meta,
 
author = <nowiki>{</nowiki>Jim Newton and Didier Verna<nowiki>}</nowiki>,
 
author = <nowiki>{</nowiki>Jim Newton and Didier Verna<nowiki>}</nowiki>,
title = <nowiki>{</nowiki>Recognizing heterogeneous sequences by rational type
+
title = <nowiki>{</nowiki>Recognizing Heterogeneous Sequences by Rational Type
expression<nowiki>}</nowiki>,
+
Expression<nowiki>}</nowiki>,
 
booktitle = <nowiki>{</nowiki>Proceedings of the Meta'18: Workshop on Meta-Programming
 
booktitle = <nowiki>{</nowiki>Proceedings of the Meta'18: Workshop on Meta-Programming
 
Techniques and Reflection<nowiki>}</nowiki>,
 
Techniques and Reflection<nowiki>}</nowiki>,
Line 35: Line 36:
 
to a compile-time operation, leaving a highly optimized
 
to a compile-time operation, leaving a highly optimized
 
linear complexity operation for run-time.<nowiki>}</nowiki>,
 
linear complexity operation for run-time.<nowiki>}</nowiki>,
lrdestatus = <nowiki>{</nowiki>accepted<nowiki>}</nowiki>
+
lrdestatus = <nowiki>{</nowiki>accepted<nowiki>}</nowiki>,
  +
nodoi = <nowiki>{</nowiki><nowiki>}</nowiki>
 
<nowiki>}</nowiki>
 
<nowiki>}</nowiki>
   

Latest revision as of 19:08, 7 April 2023

Abstract

We summarize a technique for writing functions which recognize types of heterogeneous sequences in Common Lisp. The technique employs sequence recognition functionsgenerated at compile time, and evaluated at run-time. The technique we demonstrate extends the Common Lisp type system, exploiting the theory of rational languages, Binary Decision Diagrams, and the Turing complete macro facility of Common Lisp. The resulting system uses meta-programming to move an exponential complexity operation from run-time to a compile-time operation, leaving a highly optimized linear complexity operation for run-time.

Documents

Bibtex (lrde.bib)

@InProceedings{	  newton.18.meta,
  author	= {Jim Newton and Didier Verna},
  title		= {Recognizing Heterogeneous Sequences by Rational Type
		  Expression},
  booktitle	= {Proceedings of the Meta'18: Workshop on Meta-Programming
		  Techniques and Reflection},
  year		= 2018,
  address	= {Boston, MA USA},
  month		= nov,
  abstract	= { We summarize a technique for writing functions which
		  recognize types of heterogeneous sequences in Common Lisp.
		  The technique employs sequence recognition functions,
		  generated at compile time, and evaluated at run-time. The
		  technique we demonstrate extends the Common Lisp type
		  system, exploiting the theory of rational languages, Binary
		  Decision Diagrams, and the Turing complete macro facility
		  of Common Lisp. The resulting system uses meta-programming
		  to move an exponential complexity operation from run-time
		  to a compile-time operation, leaving a highly optimized
		  linear complexity operation for run-time.},
  lrdestatus	= {accepted},
  nodoi		= {}
}