1 Introduction

klisp is an open source interpreter for the Kernel Programming Language. It aims at being comprehensive and robust as specified in the Revised(-1) Report on the Kernel Programming Language, but that probably won’t happen for some time. It is written in C99 under the MIT license. It draws heavily from the Lua interpreter source code & file structure. It uses the IMath library for arbitrary sized integers and rationals.

The Kernel programming language is a statically scoped and properly tail-recursive dialect of Lisp, descended from Scheme. It is designed to be simpler and more general than Scheme, with an exceptionally clear, simple, and versatile semantics, only one way to form compound expressions, and no inessential restrictions on the power of that one compound form. Imperative, functional, and message-passing programming styles (to name a few) may be conveniently expressed in Kernel.

An important property of Kernel is that all manipulable entities in Kernel are first-class objects. In particular, Kernel has no second-class combiners; instead, the roles of special forms and macros are subsumed by operatives, which are first-class, statically scoped combiners that act directly on their unevaluated operands. Kernel also has a second type of combiners, applicatives, which act on their evalu- ated arguments. Applicatives are roughly equivalent to Scheme procedures. However, an applicative is nothing more than a wrapper to induce operand evaluation, around an underlying operative (or, in principle, around another applicative, though that isn’t usually done); applicatives themselves are mere facilitators to computation.

klisp is freely available for both academic and commercial purposes. See LICENSE for details.

klisp is developed by Andres Navarro, a Computer Science undergraduate at Buenos Aires University (UBA). You can reach him at [email protected]. Significant contributions are being done by Oto Havle, his fork is at https://bitbucket.org/havleoto/klisp.

This manual describes klisp version 0.3, presuming some familiarity with the Lisp family of languages in general, and with the Kernel Programming Language in particular. There are frequent references to the Kernel Programming Language Report. Unlike in the report, no rationale is provided for any feature, only a description of the implemented functionality.

This is edition 0.3.