klisp

an open source interpreter for the Kernel Programming Language.
git clone http://git.hanabi.in/repos/klisp.git
Log | Files | Refs | README

Introduction.html (4828B)


      1 <html lang="en">
      2 <head>
      3 <title>Introduction - klisp Reference Manual</title>
      4 <meta http-equiv="Content-Type" content="text/html">
      5 <meta name="description" content="klisp Reference Manual">
      6 <meta name="generator" content="makeinfo 4.13">
      7 <link title="Top" rel="start" href="index.html#Top">
      8 <link rel="prev" href="License.html#License" title="License">
      9 <link rel="next" href="Interpreter.html#Interpreter" title="Interpreter">
     10 <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
     11 <meta http-equiv="Content-Style-Type" content="text/css">
     12 <style type="text/css"><!--
     13   pre.display { font-family:inherit }
     14   pre.format  { font-family:inherit }
     15   pre.smalldisplay { font-family:inherit; font-size:smaller }
     16   pre.smallformat  { font-family:inherit; font-size:smaller }
     17   pre.smallexample { font-size:smaller }
     18   pre.smalllisp    { font-size:smaller }
     19   span.sc    { font-variant:small-caps }
     20   span.roman { font-family:serif; font-weight:normal; } 
     21   span.sansserif { font-family:sans-serif; font-weight:normal; } 
     22 --></style>
     23 <link rel="stylesheet" type="text/css" href="css/style.css">
     24 </head>
     25 <body>
     26 <div class="node">
     27 <a name="Introduction"></a>
     28 <p>
     29 Next:&nbsp;<a rel="next" accesskey="n" href="Interpreter.html#Interpreter">Interpreter</a>,
     30 Previous:&nbsp;<a rel="previous" accesskey="p" href="License.html#License">License</a>,
     31 Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a>
     32 <hr>
     33 </div>
     34 
     35 <h2 class="chapter">1 Introduction</h2>
     36 
     37 <p>klisp is an open source interpreter for the Kernel Programming
     38 Language.  It aims at being comprehensive and robust as specified in
     39 the <cite>Revised(-1) Report on the Kernel Programming Language</cite>, but
     40 that probably won't happen for some time.  It is written in C99 under
     41 the MIT license.  It draws heavily from the Lua interpreter source
     42 code &amp; file structure.  It uses the IMath library for arbitrary sized
     43 integers and rationals.
     44 
     45    <p>The Kernel programming language is a statically scoped and properly
     46 tail-recursive dialect of Lisp, descended from Scheme.  It is designed
     47 to be simpler and more general than Scheme, with an exceptionally
     48 clear, simple, and versatile semantics, only one way to form compound
     49 expressions, and no inessential restrictions on the power of that one
     50 compound form.  Imperative, functional, and message-passing programming
     51 styles (to name a few) may be conveniently expressed in Kernel.
     52 
     53    <p>An important property of Kernel is that all manipulable entities in
     54 Kernel are first-class objects.  In particular, Kernel has no
     55 second-class combiners; instead, the roles of special forms and macros
     56 are subsumed by operatives, which are first-class, statically scoped
     57 combiners that act directly on their unevaluated operands.  Kernel
     58 also has a second type of combiners, applicatives, which act on their
     59 evalu- ated arguments.  Applicatives are roughly equivalent to Scheme
     60 procedures.  However, an applicative is nothing more than a wrapper to
     61 induce operand evaluation, around an underlying operative (or, in
     62 principle, around another applicative, though that isn’t usually
     63 done); applicatives themselves are mere facilitators to computation.
     64 
     65    <p>You can read more about Kernel at
     66 <a href="http://web.cs.wpi.edu/~jshutt/kernel.html">http://web.cs.wpi.edu/~jshutt/kernel.html</a>.
     67 
     68    <p>klisp is freely available for both academic and commercial purposes. 
     69 See LICENSE for details.  it can be downloaded at
     70 <a href="https://bitbucket.org/AndresNavarro/klisp">https://bitbucket.org/AndresNavarro/klisp</a>
     71 
     72    <p>klisp is developed by Andres Navarro, a Computer Science
     73 undergraduate at Buenos Aires University (UBA).  You can reach him at
     74 <a href="mailto:canavarro82@gmail.com">canavarro82@gmail.com</a>. Significant contributions are being
     75 done by Oto Havle, his fork is at
     76 <a href="https://bitbucket.org/havleoto/klisp">https://bitbucket.org/havleoto/klisp</a>.
     77 
     78    <p>This manual describes klisp version 0.3, presuming some familiarity
     79 with the Lisp family of languages in general, and with the Kernel
     80 Programming Language in particular.  There are frequent references to
     81 the Kernel Programming Language Report.  Unlike in the report, no
     82 rationale is provided for any feature, only a description of the
     83 implemented functionality.
     84 
     85    <p>This is edition 0.3.
     86 
     87 <ul class="menu">
     88 <li><a accesskey="1" href="Caveats.html#Caveats">Caveats</a>:                 Flaws and a request for help. 
     89 <li><a accesskey="2" href="Kernel-History.html#Kernel-History">Kernel History</a>:          Kernel is descended from Scheme. 
     90 <li><a accesskey="3" href="Conventions.html#Conventions">Conventions</a>:             How the manual is formatted. 
     91 <li><a accesskey="4" href="Acknowledgements.html#Acknowledgements">Acknowledgements</a>:        Contributions to this manual. 
     92 </ul>
     93 
     94    </body></html>
     95