Lispkit Lisp(ID:905/lis017)


Purely functional version of LISP - imperative components (added for speed) removed

"LispKit is an implementation of a very small pure-functional language with a LISP-like syntax"


Structures:
Related languages
LISP 1.5 => Lispkit Lisp   Stricter version of
SECD => Lispkit Lisp   Input language for
Lispkit Lisp => Lisp/sql   Based on
Lispkit Lisp => me-too   Enhancement of
Lispkit Lisp => RediLisp   Based on
Lispkit Lisp => RUTH   Based on

References:
  • Henderson, P. "The Lispkit System - A Software Kit" CS-TR: 129, Department of Computing Science, University of Newcastle, 1978 view details Abstract: This report is a complete software kit. In the form in which it is written it is intended only for readers wishing to construct the kit. That is to say, its style is terse in the extreme. It assumes familiarity with Lisp. the kit implements a variant of the Lisp language, which we call Lispkit Lisp. Lispkit Lisp has proper binding and supports higher order functions. The implementation comprises an abstract machine and a compiler, written inLispkit Lisp, which translates any Lispkit Lisp program to run on that machine. the implementor must write an emulator for this machine and then copy the compiler from the appendix of this report. Thereupon he is in a position to bootstrap the system to include his own extensions, for both the source and object of the compiler provided.
  • Henderson, P. "Functional Programming, Application and Implementation", P-H 1980. view details
  • Henderson, Peter; Jones, Geraint A and Jones, Simon B "The Lispkit Manual" Oxford Programming Research Group Technical Monograph PRG-32 1983 view details Abstract: LispKit is the portable implementation technique for a purely functional programming language, LispKit Lisp. The implementation consists of a small virtual machine, and a corpus of language support software, itself written in LispKit Lisp. It is the size and simplicity of the virtual machine which gives the implementation its portability.

    The language is a dialect of the Lisp language and shares two of the most powerful features of that language: the universal structured type, the list; and s-expression syntax which is both expressive and easily manipulated by program. It differs from full Lisp in that all LispKit programs must be written in a functional style, since there are no language primitives for updating data structures. The absence of destructive assignment greatly improves the intelligibility of programs, and is held to improve programmer productivity, by simplifying the creation and maintenance of correct programs.

    The first volume consists of a brief introduction to the language, and to some of the existing implementations of the system, together with a note about each of the software components of the system. The second volume contains copies of all the Lispkit Lisp programs and libraries as they were being distributed by the authors at the time of going to press, together with the text of an implementation of the virtual machine which supports the LispKit system.

    External link: Online copy
  • Spinellis, Diomidis D., "Programming Paradigms as Object Classes: A Structuring Mechanism for Multiparadigm Programming", PhD Thesis 1994 University of London view details Abstract: The word paradigm, is used in computer science to talk about a family
    of notations, that share a common way for describing program implementations. Since each paradigm is well suited for solving only a range of problems, ideally a large system should be subdivided into components, each of which should be implemented in the most appropriate paradigm. Multiparadigm programming, allows the programmer to implement a system, in a number of different paradigms. The use of multiparadigm programming techniques, could lower implementation costs, and result in more reliable and efficient applications. External link: Online copy
  • Lins, R. D.: The Fall and Rise of FP (Invited Paper) view details
          in 3rd International Summer School on Functional Programming Braga PORTUGAL 1998 view details
  • Radovanoviæ M., Ivanoviæ M., An Implementation of LispKit LISP in Java, XV Conference on Applied Mathematics - PRIM 2002, Zlatibor, Yugoslavia, 2002 view details Abstract: Functional programming languages (FPL) and their implementations are still very inter-
    esting topics in the computer community. Declarative languages are also extremely interesing
    in the eld of inter-agent communication. Thus it seems that a FPL could be a good starting
    point for the implementation of particular Agent Communication Languages. In this paper a
    description of a concrete LispKit LISP system is given. The system is implemented in Java,
    and consists of a translator from LispKit LISP to SECD machine code and an interpreter
    for that code.
    The emphasis of the paper is on simplicity and clarity of underlying concepts, rather than
    actual practical use of the system. But, it can be used as an interesting tool for educational
    purposes, in the eld of functional programming and in the eld of compiler construction, as
    well. Particular focus is on features of the Java programming language which are extensively
    used in the implementation, such as packages, class inheritance, interfaces, garbage collection
    and the standard library. The implemented LispKit LISP system will be analyzed as a
    possible core language for the realization of a concrete ACL. pdf
          in 3rd International Summer School on Functional Programming Braga PORTUGAL 1998 view details
    Resources
    • Archive at Oxford

      "
    • SECD Machine built at Indiana
      A computer for executing compiled Lisp, implementing the SECD virtual machine model. The processor and storage reclamation unit are derived using the DDD transformation system.

      The project pictured is a prototype computer implemented in PLD technology and executed on a 2nd-generation Logic Engine development system. The design specification comes from the SECD computer, a basic Lisp implementation from Lispkit Lisp (Henderson, Jones and Jones, Oxford PRG Technical Manual 32, 1995). external link