Unlimp, Uniqueness as a Leitmotiv for Implementation

When evaluation in functional programming languages is explained using λ-calculus and/or term rewriting systems, expressions and function definitions are often defined as terms, that is as trees. Similarly, the collection of all terms is defined as a forest, that is a directed, acyclic graph where every vertex has at most one incoming edge. Concrete implementations usually drop the last restriction (and sometimes acyclicity as well), i.e. many terms can share a common subterm, meaning that different paths of subterm edges reach the same vertex in the graph.

[1]  Jan Willem Klop,et al.  Extended Term Rewriting Systems , 1990, CTRS.

[2]  Richard S. Bird,et al.  Lectures on Constructive Functional Programming , 1989 .

[3]  Peter G. Harrison,et al.  Functional Programming , 1988 .

[4]  Eiichi Goto,et al.  A Hashing Method for Fast Set Operations , 1976, Inf. Process. Lett..

[5]  Berthold Hoffmann,et al.  Implementing term rewriting by jungle evaluation , 1991, RAIRO Theor. Informatics Appl..

[6]  Annegret Habel,et al.  Jungle evaluation , 1988, Fundam. Informaticae.

[7]  Simon L. Peyton Jones,et al.  Report on the programming language Haskell: a non-strict, purely functional language version 1.2 , 1992, SIGP.

[8]  William Pugh,et al.  Incremental computation via function caching , 1989, POPL '89.

[9]  Berthold Hoffmann,et al.  Jungle Evaluation for Efficient Term Rewriting , 1988, ALP.

[10]  Ben Wegbreit,et al.  Proving Properties of Complex Data Structures , 1976, JACM.

[11]  DONALD MICHIE,et al.  “Memo” Functions and Machine Learning , 1968, Nature.

[12]  Simon L. Peyton Jones,et al.  The Implementation of Functional Programming Languages , 1987 .

[13]  John Hughes,et al.  Lazy Memo-functions , 1985, FPCA.

[14]  Gaston H. Gonnet,et al.  Handbook Of Algorithms And Data Structures , 1984 .

[15]  Berthold Hoffmann,et al.  Term Rewriting with Sharing and Memoïzation , 1992, ALP.

[16]  Berthold Hoomann,et al.  Term Rewriting with Sharing and Memo , 1992 .

[17]  S. Sokolowski,et al.  Applicative High Order Programming , 1991 .

[18]  Lawrence Charles Paulson,et al.  ML for the working programmer , 1991 .

[19]  Philip Wadler,et al.  Packrat parsing:: simple, powerful, lazy, linear time, functional pearl , 2002, ICFP '02.