diff --git a/doc/further_reading.md b/doc/further_reading.md index 9d97f5a..3dfd32c 100644 --- a/doc/further_reading.md +++ b/doc/further_reading.md @@ -1,7 +1,16 @@ # Further Reading 1. [CODING for the MIT-IBM 704 COMPUTER, October 1957](http://bitsavers.org/pdf/mit/computer_center/Coding_for_the_MIT-IBM_704_Computer_Oct57.pdf) + This paper is not about Lisp. But it is about the particular individual computer on which Lisp was first implemented, and it is written in part by members of the Lisp team. I have found it useful in understanding the software environment in which, and the constraints under which, Lisp was written. 2. [MIT AI Memo 1, John McCarthy, September 1958](https://www.softwarepreservation.org/projects/LISP/MIT/AIM-001.pdf) + This is, as far as I can find, the earliest specification document of the Lisp project. 3. [Lisp 1 Programmer's Manual, Phyllis Fox, March 1960](https://bitsavers.org/pdf/mit/rle_lisp/LISP_I_Programmers_Manual_Mar60.pdf) 4. [Lisp 1.5 Programmer's Manual, Michael I. Levin, August 1962](https://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf#page=81) + This book is essential reading: it documents in some detail the first fully realised Lisp language system. 5. [Early LISP History (1956 - 1959), Herbert Stoyan, August 1984](https://dl.acm.org/doi/pdf/10.1145/800055.802047#page=3) + + +6. [The Roots of Lisp, Paul Graham, 2001](http://www.paulgraham.com/rootsoflisp.html) +6. [The Revenge of the Nerds, Paul Graham, 2002](http://www.paulgraham.com/icad.html) + This is mainly about why to use Lisp as a language for modern commercial software, but has useful insights into where it comes from. + > So the short explanation of why this 1950s language is not obsolete is that it was not technology but math, and math doesn't get stale. \ No newline at end of file diff --git a/doc/lisp1.5.md b/doc/lisp1.5.md index 116cf53..972389f 100644 --- a/doc/lisp1.5.md +++ b/doc/lisp1.5.md @@ -5,10 +5,10 @@ **Massachusetts Institute of Technology** -> John McCarthy -> Paul W. Abrahams -> Daniel J. Edwards -> Timothy P. Hart +> [John McCarthy](https://en.wikipedia.org/wiki/John_McCarthy_(computer_scientist)) +> [Paul W. Abrahams](https://mitpress.mit.edu/author/paul-w-abrahams-31449/) +> [Daniel J. Edwards](https://www.chessprogramming.org/Daniel_Edwards) +> [Timothy P. Hart](https://www.chessprogramming.org/Timothy_Hart) > The M. I.T. Press > Massachusetts Institute of Technology @@ -43,11 +43,11 @@ The over-all design of the LISP Programming System is the work of John McCarthy This manual was written by Michael I. Levin. -The interpreter was programmed by Stephen B. Russell and Daniel J. Edwards. The print and read programs were written by John McCarthy, Klim Maling, Daniel J. Edwards, and Paul W, Abrahams. +The interpreter was programmed by [Stephen B. Russell](https://en.wikipedia.org/wiki/Steve_Russell_(computer_scientist)) and Daniel J. Edwards. The print and read programs were written by John McCarthy, Klim Maling, Daniel J. Edwards, and Paul W. Abrahams. The garbage collector and arithmetic features Were written by Daniel J. Edwards. The compiler and assembler were written by Timothy P. Hart and Michael I. Levin. An earlier compiler was written by Robert Brayton. -The "LISP 1 Programmer's Manual" March 1, 1960, was written by Phyllis A. Fox. Additional programs and suggestions were contributed by the following members of the Artificial Intelligence Group of the Research Laboratory of Electronics: Marvin L. Minsky, Bertram Raphael, Louis Hodes, David M. R. Park, David C. Luckham, Daniel G. Bobrow, James R. Slagle, and Nathaniel Rochester. +The "LISP 1 Programmer's Manual" March 1, 1960, was written by [Phyllis A. Fox](https://en.wikipedia.org/wiki/Phyllis_Fox). Additional programs and suggestions were contributed by the following members of the Artificial Intelligence Group of the Research Laboratory of Electronics: Marvin L. Minsky, Bertram Raphael, Louis Hodes, David M. R. Park, David C. Luckham, Daniel G. Bobrow, James R. Slagle, and Nathaniel Rochester. August 17, 1962 @@ -3347,7 +3347,7 @@ eval[form; a]= [ eq[car[form]; QUOTE] -> cadr[form]; eq[car[form]; FUNCTION] -> list[FUNARG; cadr[form]; a]; eq[car [form]; COND] -> evcon[cdr[form]; a]; - eq[car [form]; PROG] -> prog[cdr [form]; a]; + eq[car [form]; PROG] -> prog[cdr[form]; a]; atom[car[form]] -> [get[car [form]; EXPR] -> apply[expr; evlis[cdr[form]; a]; a]; get[car[form]; FEXPR] -> @@ -3375,27 +3375,18 @@ The PROG feature is an FSUBR coded into the system. It can best be explained in English, although it is possible to define it by using M-expressions. 1. As soon as the PROG feature is entered, the list of program variables is used -to make a new list in which each one is paired with NIL. This is then appended to the -current a-list. Thus each program variable is set to NIL at the entrance to the program. +to make a new list in which each one is paired with NIL. This is then appended to the current a-list. Thus each program variable is set to NIL at the entrance to the program. 2. The remainder of the program is searched for atomic symbols that are under- -stood to be location symbols. A go-list is formed in which each location symbol is -paired with a pointer into the remainder of the program. -3. When a set or a setq - is encountered, the name of the variable is located on the -a-list. The value of the variable (or cs of the pair) is actually replaced with the new -value. +stood to be location symbols. A go-list is formed in which each location symbol is paired with a pointer into the remainder of the program. +3. When a set or a setq - is encountered, the name of the variable is located on the a-list. The value of the variable (or cdr of the pair) is actually replaced with the new value. ----- -1. The value of get is set aside. This is the meaning of the apparent free or unde- -fined variable- -2. In the actual system this is handled by an FSUBR rather than as the separate special -case as shown here. +1. The value of get is set aside. This is the meaning of the apparent free or undefined variable. +2. In the actual system this is handled by an FSUBR rather than as the separate special case as shown here. <a name="page72">page 72</a> -If the variable is bound several times on the a-list, only the first or most recent -occurrence is changed. If the current binding of the variable is at a higher level than -the entrance to the prog, then the change will remain in effect throughout the scope -of that binding, and the old value will be lost. +If the variable is bound several times on the a-list, only the first or most recent occurrence is changed. If the current binding of the variable is at a higher level than the entrance to the prog, then the change will remain in effect throughout the scope of that binding, and the old value will be lost. If the variable does not occur on the a-list, then error diagnostic `A4` or `A5` will occur. diff --git a/docs/codox/beowulf.bootstrap.html b/docs/codox/beowulf.bootstrap.html index 068508a..e43c121 100644 --- a/docs/codox/beowulf.bootstrap.html +++ b/docs/codox/beowulf.bootstrap.html @@ -1,13 +1,17 @@ <!DOCTYPE html PUBLIC "" ""> -<html><head><meta charset="UTF-8" /><title>beowulf.bootstrap documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Beowulf</span> <span class="project-version">0.3.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="intro.html"><div class="inner"><span>beowulf</span></div></a></li><li class="depth-1 "><a href="mexpr.html"><div class="inner"><span>Interpreting M-Expressions</span></div></a></li><li class="depth-1 "><a href="values.html"><div class="inner"><span>Understanding values and properties</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>beowulf</span></div></div></li><li class="depth-2 branch current"><a href="beowulf.bootstrap.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bootstrap</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cons-cell</span></div></a></li><li class="depth-2 branch"><a href="beowulf.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2 branch"><a href="beowulf.gendoc.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>gendoc</span></div></a></li><li class="depth-2 branch"><a href="beowulf.host.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>host</span></div></a></li><li class="depth-2 branch"><a href="beowulf.io.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>io</span></div></a></li><li class="depth-2 branch"><a href="beowulf.manual.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>manual</span></div></a></li><li class="depth-2 branch"><a href="beowulf.oblist.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>oblist</span></div></a></li><li class="depth-2 branch"><a href="beowulf.read.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>read</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>reader</span></div></div></li><li class="depth-3 branch"><a href="beowulf.reader.char-reader.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>char-reader</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.generate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>generate</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.macros.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>macros</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li><li class="depth-3"><a href="beowulf.reader.simplify.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simplify</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="beowulf.bootstrap.html#var-APPLY"><div class="inner"><span>APPLY</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-CAAAAR"><div class="inner"><span>CAAAAR</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-CAAADR"><div class="inner"><span>CAAADR</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-CAAAR"><div class="inner"><span>CAAAR</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-CAADAR"><div class="inner"><span>CAADAR</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-CAADDR"><div class="inner"><span>CAADDR</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-CAADR"><div class="inner"><span>CAADR</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-CAAR"><div class="inner"><span>CAAR</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-CADAAR"><div class="inner"><span>CADAAR</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-CADADR"><div class="inner"><span>CADADR</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-CADAR"><div class="inner"><span>CADAR</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-CADDAR"><div class="inner"><span>CADDAR</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-CADDDR"><div class="inner"><span>CADDDR</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-CADDR"><div class="inner"><span>CADDR</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-CADR"><div class="inner"><span>CADR</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-CDAAAR"><div class="inner"><span>CDAAAR</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-CDAADR"><div class="inner"><span>CDAADR</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-CDAAR"><div class="inner"><span>CDAAR</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-CDADAR"><div class="inner"><span>CDADAR</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-CDADDR"><div class="inner"><span>CDADDR</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-CDADR"><div class="inner"><span>CDADR</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-CDAR"><div class="inner"><span>CDAR</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-CDDAAR"><div class="inner"><span>CDDAAR</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-CDDADR"><div class="inner"><span>CDDADR</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-CDDAR"><div class="inner"><span>CDDAR</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-CDDDAR"><div class="inner"><span>CDDDAR</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-CDDDDR"><div class="inner"><span>CDDDDR</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-CDDDR"><div class="inner"><span>CDDDR</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-CDDR"><div class="inner"><span>CDDR</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-EVAL"><div class="inner"><span>EVAL</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-INTEROP"><div class="inner"><span>INTEROP</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-interop-interpret-q-name"><div class="inner"><span>interop-interpret-q-name</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-QUOTE"><div class="inner"><span>QUOTE</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-to-beowulf"><div class="inner"><span>to-beowulf</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-to-clojure"><div class="inner"><span>to-clojure</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-uaf"><div class="inner"><span>uaf</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">beowulf.bootstrap</h1><div class="doc"><div class="markdown"><p>Lisp as defined in Chapter 1 (pages 1-14) of the <code>Lisp 1.5 Programmer's Manual</code>; that is to say, a very simple Lisp language, which should, I believe, be sufficient in conjunction with the functions provided by <code>beowulf.host</code>, be sufficient to bootstrap the full Lisp 1.5 interpreter..</p> +<html><head><meta charset="UTF-8" /><title>beowulf.bootstrap documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Beowulf</span> <span class="project-version">0.3.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="further_reading.html"><div class="inner"><span>Further Reading</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>beowulf</span></div></a></li><li class="depth-1 "><a href="mexpr.html"><div class="inner"><span>Interpreting M-Expressions</span></div></a></li><li class="depth-1 "><a href="values.html"><div class="inner"><span>The properties of the system, and their values: here be dragons</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>beowulf</span></div></div></li><li class="depth-2 branch current"><a href="beowulf.bootstrap.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bootstrap</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cons-cell</span></div></a></li><li class="depth-2 branch"><a href="beowulf.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2 branch"><a href="beowulf.gendoc.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>gendoc</span></div></a></li><li class="depth-2 branch"><a href="beowulf.host.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>host</span></div></a></li><li class="depth-2 branch"><a href="beowulf.interop.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>interop</span></div></a></li><li class="depth-2 branch"><a href="beowulf.io.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>io</span></div></a></li><li class="depth-2 branch"><a href="beowulf.manual.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>manual</span></div></a></li><li class="depth-2 branch"><a href="beowulf.oblist.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>oblist</span></div></a></li><li class="depth-2 branch"><a href="beowulf.read.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>read</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>reader</span></div></div></li><li class="depth-3 branch"><a href="beowulf.reader.char-reader.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>char-reader</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.generate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>generate</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.macros.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>macros</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li><li class="depth-3"><a href="beowulf.reader.simplify.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simplify</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="beowulf.bootstrap.html#var-APPLY"><div class="inner"><span>APPLY</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-EVAL"><div class="inner"><span>EVAL</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-find-target"><div class="inner"><span>find-target</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-PROG"><div class="inner"><span>PROG</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-prog-eval"><div class="inner"><span>prog-eval</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-try-resolve-subroutine"><div class="inner"><span>try-resolve-subroutine</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">beowulf.bootstrap</h1><div class="doc"><div class="markdown"><p>Lisp as defined in Chapter 1 (pages 1-14) of the <code>Lisp 1.5 Programmer's Manual</code>; that is to say, a very simple Lisp language, which should, I believe, be sufficient in conjunction with the functions provided by <code>beowulf.host</code>, be sufficient to bootstrap the full Lisp 1.5 interpreter..</p> <p>The convention is adopted that functions in this file with names in ALLUPPERCASE are Lisp 1.5 functions (although written in Clojure) and that therefore all arguments must be numbers, symbols or <code>beowulf.cons_cell.ConsCell</code> objects.</p></div></div><div class="public anchor" id="var-APPLY"><h3>APPLY</h3><div class="usage"><code>(APPLY function args environment depth)</code></div><div class="doc"><div class="markdown"><p>Apply this <code>function</code> to these <code>arguments</code> in this <code>environment</code> and return the result.</p> -<p>For bootstrapping, at least, a version of APPLY written in Clojure. All args are assumed to be symbols or <code>beowulf.cons-cell/ConsCell</code> objects. See page 13 of the Lisp 1.5 Programmers Manual.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L297">view source</a></div></div><div class="public anchor" id="var-CAAAAR"><h3>CAAAAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CAAAAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L92">view source</a></div></div><div class="public anchor" id="var-CAAADR"><h3>CAAADR</h3><h4 class="type">macro</h4><div class="usage"><code>(CAAADR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L100">view source</a></div></div><div class="public anchor" id="var-CAAAR"><h3>CAAAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CAAAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L83">view source</a></div></div><div class="public anchor" id="var-CAADAR"><h3>CAADAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CAADAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L93">view source</a></div></div><div class="public anchor" id="var-CAADDR"><h3>CAADDR</h3><h4 class="type">macro</h4><div class="usage"><code>(CAADDR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L101">view source</a></div></div><div class="public anchor" id="var-CAADR"><h3>CAADR</h3><h4 class="type">macro</h4><div class="usage"><code>(CAADR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L84">view source</a></div></div><div class="public anchor" id="var-CAAR"><h3>CAAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CAAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L78">view source</a></div></div><div class="public anchor" id="var-CADAAR"><h3>CADAAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CADAAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L94">view source</a></div></div><div class="public anchor" id="var-CADADR"><h3>CADADR</h3><h4 class="type">macro</h4><div class="usage"><code>(CADADR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L102">view source</a></div></div><div class="public anchor" id="var-CADAR"><h3>CADAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CADAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L85">view source</a></div></div><div class="public anchor" id="var-CADDAR"><h3>CADDAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CADDAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L95">view source</a></div></div><div class="public anchor" id="var-CADDDR"><h3>CADDDR</h3><h4 class="type">macro</h4><div class="usage"><code>(CADDDR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L103">view source</a></div></div><div class="public anchor" id="var-CADDR"><h3>CADDR</h3><h4 class="type">macro</h4><div class="usage"><code>(CADDR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L86">view source</a></div></div><div class="public anchor" id="var-CADR"><h3>CADR</h3><h4 class="type">macro</h4><div class="usage"><code>(CADR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L79">view source</a></div></div><div class="public anchor" id="var-CDAAAR"><h3>CDAAAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDAAAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L98">view source</a></div></div><div class="public anchor" id="var-CDAADR"><h3>CDAADR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDAADR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L106">view source</a></div></div><div class="public anchor" id="var-CDAAR"><h3>CDAAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDAAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L89">view source</a></div></div><div class="public anchor" id="var-CDADAR"><h3>CDADAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDADAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L99">view source</a></div></div><div class="public anchor" id="var-CDADDR"><h3>CDADDR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDADDR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L107">view source</a></div></div><div class="public anchor" id="var-CDADR"><h3>CDADR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDADR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L90">view source</a></div></div><div class="public anchor" id="var-CDAR"><h3>CDAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L81">view source</a></div></div><div class="public anchor" id="var-CDDAAR"><h3>CDDAAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDDAAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L96">view source</a></div></div><div class="public anchor" id="var-CDDADR"><h3>CDDADR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDDADR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L104">view source</a></div></div><div class="public anchor" id="var-CDDAR"><h3>CDDAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDDAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L87">view source</a></div></div><div class="public anchor" id="var-CDDDAR"><h3>CDDDAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDDDAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L97">view source</a></div></div><div class="public anchor" id="var-CDDDDR"><h3>CDDDDR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDDDDR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L105">view source</a></div></div><div class="public anchor" id="var-CDDDR"><h3>CDDDR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDDDR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L88">view source</a></div></div><div class="public anchor" id="var-CDDR"><h3>CDDR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDDR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L80">view source</a></div></div><div class="public anchor" id="var-EVAL"><h3>EVAL</h3><div class="usage"><code>(EVAL expr)</code><code>(EVAL expr env depth)</code></div><div class="doc"><div class="markdown"><p>Evaluate this <code>expr</code> and return the result. If <code>environment</code> is not passed, it defaults to the current value of the global object list. The <code>depth</code> argument is part of the tracing system and should not be set by user code.</p> -<p>All args are assumed to be numbers, symbols or <code>beowulf.cons-cell/ConsCell</code> objects.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L367">view source</a></div></div><div class="public anchor" id="var-INTEROP"><h3>INTEROP</h3><div class="usage"><code>(INTEROP fn-symbol args)</code></div><div class="doc"><div class="markdown"><p>Clojure (or other host environment) interoperation API. <code>fn-symbol</code> is expected to be either</p> -<ol> - <li>a symbol bound in the host environment to a function; or</li> - <li>a sequence (list) of symbols forming a qualified path name bound to a function.</li> -</ol> -<p>Lower case characters cannot normally be represented in Lisp 1.5, so both the upper case and lower case variants of <code>fn-symbol</code> will be tried. If the function you’re looking for has a mixed case name, that is not currently accessible.</p> -<p><code>args</code> is expected to be a Lisp 1.5 list of arguments to be passed to that function. Return value must be something acceptable to Lisp 1.5, so either a symbol, a number, or a Lisp 1.5 list.</p> -<p>If <code>fn-symbol</code> is not found (even when cast to lower case), or is not a function, or the value returned cannot be represented in Lisp 1.5, an exception is thrown with <code>:cause</code> bound to <code>:interop</code> and <code>:detail</code> set to a value representing the actual problem.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L152">view source</a></div></div><div class="public anchor" id="var-interop-interpret-q-name"><h3>interop-interpret-q-name</h3><div class="usage"><code>(interop-interpret-q-name l)</code></div><div class="doc"><div class="markdown"><p>For interoperation with Clojure, it will often be necessary to pass qualified names that are not representable in Lisp 1.5. This function takes a sequence in the form <code>(PART PART PART... NAME)</code> and returns a symbol in the form <code>PART.PART.PART/NAME</code>. This symbol will then be tried in both that form and lower-cased. Names with hyphens or underscores cannot be represented with this scheme.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L111">view source</a></div></div><div class="public anchor" id="var-QUOTE"><h3>QUOTE</h3><h4 class="type">macro</h4><div class="usage"><code>(QUOTE f)</code></div><div class="doc"><div class="markdown"><p>Quote, but in upper case for LISP 1.5</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L49">view source</a></div></div><div class="public anchor" id="var-to-beowulf"><h3>to-beowulf</h3><div class="usage"><code>(to-beowulf o)</code></div><div class="doc"><div class="markdown"><p>Return a beowulf-native representation of the Clojure object <code>o</code>. Numbers and symbols are unaffected. Collections have to be converted; strings must be converted to symbols.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L130">view source</a></div></div><div class="public anchor" id="var-to-clojure"><h3>to-clojure</h3><div class="usage"><code>(to-clojure l)</code></div><div class="doc"><div class="markdown"><p>If l is a <code>beowulf.cons_cell.ConsCell</code>, return a Clojure list having the same members in the same order.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L140">view source</a></div></div><div class="public anchor" id="var-uaf"><h3>uaf</h3><div class="usage"><code>(uaf l path)</code></div><div class="doc"><div class="markdown"><p>Universal access function; <code>l</code> is expected to be an arbitrary LISP list, <code>path</code> a (clojure) list of the characters <code>a</code> and <code>d</code>. Intended to make declaring all those fiddly <code>#'c[ad]+r'</code> functions a bit easier</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L54">view source</a></div></div></div></body></html> \ No newline at end of file +<p>For bootstrapping, at least, a version of APPLY written in Clojure. All args are assumed to be symbols or <code>beowulf.cons-cell/ConsCell</code> objects. See page 13 of the Lisp 1.5 Programmers Manual.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L244">view source</a></div></div><div class="public anchor" id="var-EVAL"><h3>EVAL</h3><div class="usage"><code>(EVAL expr)</code><code>(EVAL expr env depth)</code></div><div class="doc"><div class="markdown"><p>Evaluate this <code>expr</code> and return the result. If <code>environment</code> is not passed, it defaults to the current value of the global object list. The <code>depth</code> argument is part of the tracing system and should not be set by user code.</p> +<p>All args are assumed to be numbers, symbols or <code>beowulf.cons-cell/ConsCell</code> objects. However, if called with just a single arg, <code>expr</code>, I’ll assume it’s being called from the Clojure REPL and will coerce the <code>expr</code> to <code>ConsCell</code>.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L340">view source</a></div></div><div class="public anchor" id="var-find-target"><h3>find-target</h3><div class="usage"></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L42">view source</a></div></div><div class="public anchor" id="var-PROG"><h3>PROG</h3><div class="usage"><code>(PROG program env depth)</code></div><div class="doc"><div class="markdown"><p>The accursed <code>PROG</code> feature. See page 71 of the manual.</p> +<p>Lisp 1.5 introduced <code>PROG</code>, and most Lisps have been stuck with it ever since. It introduces imperative programming into what should be a pure functional language, and consequently it’s going to be a pig to implement.</p> +<p>Broadly, <code>PROG</code> is a variadic pseudo function called as a <code>FEXPR</code> (or possibly an <code>FSUBR</code>, although I’m not presently sure that would even work.)</p> +<p>The arguments, which are unevaluated, are a list of forms, the first of which is expected tp be a list of symbols which will be treated as names of variables within the program, and the rest of which (the ‘program body’) are either lists or symbols. Lists are treated as Lisp expressions which may be evaulated in turn. Symbols are treated as targets for the <code>GO</code> statement. </p> +<p><strong>GO:</strong> A <code>GO</code> statement takes the form of <code>(GO target)</code>, where <code>target</code> should be one of the symbols which occur at top level among that particular invocation of <code>PROG</code>s arguments. A <code>GO</code> statement may occur at top level in a PROG, or in a clause of a <code>COND</code> statement in a <code>PROG</code>, but not in a function called from the <code>PROG</code> statement. When a <code>GO</code> statement is evaluated, execution should transfer immediately to the expression which is the argument list immediately following the symbol which is its target.</p> +<p>If the target is not found, an error with the code <code>A6</code> should be thrown.</p> +<p><strong>RETURN:</strong> A <code>RETURN</code> statement takes the form <code>(RETURN value)</code>, where <code>value</code> is any value. Following the evaluation of a <code>RETURN</code> statement, the <code>PROG</code> should immediately exit without executing any further expressions, returning the value.</p> +<p><strong>SET and SETQ:</strong> In addition to the above, if a <code>SET</code> or <code>SETQ</code> expression is encountered in any expression within the <code>PROG</code> body, it should affect not the global object list but instead only the local variables of the program.</p> +<p><strong>COND:</strong> In <strong>strict</strong> mode, when in normal execution, a <code>COND</code> statement none of whose clauses match should not return <code>NIL</code> but should throw an error with the code <code>A3</code>… <em>except</em> that inside a <code>PROG</code> body, it should not do so. <em>sigh</em>.</p> +<p><strong>Flow of control:</strong> Apart from the exceptions specified above, expressions in the program body are evaluated sequentially. If execution reaches the end of the program body, <code>NIL</code> is returned.</p> +<p>Got all that?</p> +<p>Good.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L96">view source</a></div></div><div class="public anchor" id="var-prog-eval"><h3>prog-eval</h3><div class="usage"><code>(prog-eval expr vars env depth)</code></div><div class="doc"><div class="markdown"><p>Like <code>EVAL</code>, q.v., except handling symbols, and expressions starting <code>GO</code>, <code>RETURN</code>, <code>SET</code> and <code>SETQ</code> specially.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L67">view source</a></div></div><div class="public anchor" id="var-try-resolve-subroutine"><h3>try-resolve-subroutine</h3><div class="usage"><code>(try-resolve-subroutine subr args)</code></div><div class="doc"><div class="markdown"><p>Attempt to resolve this <code>subr</code> with these <code>arg</code>.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L182">view source</a></div></div></div></body></html> \ No newline at end of file diff --git a/docs/codox/beowulf.cons-cell.html b/docs/codox/beowulf.cons-cell.html index 26fa55a..6db1822 100644 --- a/docs/codox/beowulf.cons-cell.html +++ b/docs/codox/beowulf.cons-cell.html @@ -1,3 +1,3 @@ <!DOCTYPE html PUBLIC "" ""> -<html><head><meta charset="UTF-8" /><title>beowulf.cons-cell documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Beowulf</span> <span class="project-version">0.3.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="intro.html"><div class="inner"><span>beowulf</span></div></a></li><li class="depth-1 "><a href="mexpr.html"><div class="inner"><span>Interpreting M-Expressions</span></div></a></li><li class="depth-1 "><a href="values.html"><div class="inner"><span>Understanding values and properties</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>beowulf</span></div></div></li><li class="depth-2 branch"><a href="beowulf.bootstrap.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bootstrap</span></div></a></li><li class="depth-2 branch current"><a href="beowulf.cons-cell.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cons-cell</span></div></a></li><li class="depth-2 branch"><a href="beowulf.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2 branch"><a href="beowulf.gendoc.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>gendoc</span></div></a></li><li class="depth-2 branch"><a href="beowulf.host.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>host</span></div></a></li><li class="depth-2 branch"><a href="beowulf.io.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>io</span></div></a></li><li class="depth-2 branch"><a href="beowulf.manual.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>manual</span></div></a></li><li class="depth-2 branch"><a href="beowulf.oblist.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>oblist</span></div></a></li><li class="depth-2 branch"><a href="beowulf.read.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>read</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>reader</span></div></div></li><li class="depth-3 branch"><a href="beowulf.reader.char-reader.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>char-reader</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.generate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>generate</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.macros.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>macros</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li><li class="depth-3"><a href="beowulf.reader.simplify.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simplify</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="beowulf.cons-cell.html#var-cons-cell.3F"><div class="inner"><span>cons-cell?</span></div></a></li><li class="depth-1"><a href="beowulf.cons-cell.html#var-F"><div class="inner"><span>F</span></div></a></li><li class="depth-1"><a href="beowulf.cons-cell.html#var-make-beowulf-list"><div class="inner"><span>make-beowulf-list</span></div></a></li><li class="depth-1"><a href="beowulf.cons-cell.html#var-make-cons-cell"><div class="inner"><span>make-cons-cell</span></div></a></li><li class="depth-1"><a href="beowulf.cons-cell.html#var-MutableSequence"><div class="inner"><span>MutableSequence</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html#var-getCar"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>getCar</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html#var-getCdr"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>getCdr</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html#var-getUid"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>getUid</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html#var-rplaca"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>rplaca</span></div></a></li><li class="depth-2"><a href="beowulf.cons-cell.html#var-rplacd"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>rplacd</span></div></a></li><li class="depth-1"><a href="beowulf.cons-cell.html#var-pretty-print"><div class="inner"><span>pretty-print</span></div></a></li><li class="depth-1"><a href="beowulf.cons-cell.html#var-T"><div class="inner"><span>T</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">beowulf.cons-cell</h1><div class="doc"><div class="markdown"><p>The fundamental cons cell on which all Lisp structures are built. Lisp 1.5 lists do not necessarily have a sequence as their CDR, and must have both CAR and CDR mutable, so cannot be implemented on top of Clojure lists.</p></div></div><div class="public anchor" id="var-cons-cell.3F"><h3>cons-cell?</h3><div class="usage"><code>(cons-cell? o)</code></div><div class="doc"><div class="markdown"><p>Is this object <code>o</code> a beowulf cons-cell?</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/cons_cell.clj#L240">view source</a></div></div><div class="public anchor" id="var-F"><h3>F</h3><div class="usage"></div><div class="doc"><div class="markdown"><p>The canonical false value - different from <code>NIL</code>, which is not canonically false in Lisp 1.5.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/cons_cell.clj#L34">view source</a></div></div><div class="public anchor" id="var-make-beowulf-list"><h3>make-beowulf-list</h3><div class="usage"><code>(make-beowulf-list x)</code></div><div class="doc"><div class="markdown"><p>Construct a linked list of cons cells with the same content as the sequence <code>x</code>.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/cons_cell.clj#L254">view source</a></div></div><div class="public anchor" id="var-make-cons-cell"><h3>make-cons-cell</h3><div class="usage"><code>(make-cons-cell car cdr)</code></div><div class="doc"><div class="markdown"><p>Construct a new instance of cons cell with this <code>car</code> and <code>cdr</code>.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/cons_cell.clj#L245">view source</a></div></div><div class="public anchor" id="var-MutableSequence"><h3>MutableSequence</h3><h4 class="type">protocol</h4><div class="usage"></div><div class="doc"><div class="markdown"><p>Like a sequence, but mutable.</p></div></div><div class="members"><h4>members</h4><div class="inner"><div class="public anchor" id="var-getCar"><h3>getCar</h3><div class="usage"><code>(getCar this)</code></div><div class="doc"><div class="markdown"><p>Return the first element of this sequence.</p></div></div></div><div class="public anchor" id="var-getCdr"><h3>getCdr</h3><div class="usage"><code>(getCdr this)</code></div><div class="doc"><div class="markdown"><p>like <code>more</code>, q.v., but returns List <code>NIL</code> not Clojure <code>nil</code> when empty.</p></div></div></div><div class="public anchor" id="var-getUid"><h3>getUid</h3><div class="usage"><code>(getUid this)</code></div><div class="doc"><div class="markdown"><p>Returns a unique identifier for this object</p></div></div></div><div class="public anchor" id="var-rplaca"><h3>rplaca</h3><div class="usage"><code>(rplaca this value)</code></div><div class="doc"><div class="markdown"><p>replace the first element of this sequence with this value</p></div></div></div><div class="public anchor" id="var-rplacd"><h3>rplacd</h3><div class="usage"><code>(rplacd this value)</code></div><div class="doc"><div class="markdown"><p>replace the rest (but-first; cdr) of this sequence with this value</p></div></div></div></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/cons_cell.clj#L41">view source</a></div></div><div class="public anchor" id="var-pretty-print"><h3>pretty-print</h3><div class="usage"><code>(pretty-print cell)</code><code>(pretty-print cell width level)</code></div><div class="doc"><div class="markdown"><p>This isn’t the world’s best pretty printer but it sort of works.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/cons_cell.clj#L206">view source</a></div></div><div class="public anchor" id="var-T"><h3>T</h3><div class="usage"></div><div class="doc"><div class="markdown"><p>The canonical true value.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/cons_cell.clj#L30">view source</a></div></div></div></body></html> \ No newline at end of file +<html><head><meta charset="UTF-8" /><title>beowulf.cons-cell documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Beowulf</span> <span class="project-version">0.3.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="further_reading.html"><div class="inner"><span>Further Reading</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>beowulf</span></div></a></li><li class="depth-1 "><a href="mexpr.html"><div class="inner"><span>Interpreting M-Expressions</span></div></a></li><li class="depth-1 "><a href="values.html"><div class="inner"><span>The properties of the system, and their values: here be dragons</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>beowulf</span></div></div></li><li class="depth-2 branch"><a href="beowulf.bootstrap.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bootstrap</span></div></a></li><li class="depth-2 branch current"><a href="beowulf.cons-cell.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cons-cell</span></div></a></li><li class="depth-2 branch"><a href="beowulf.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2 branch"><a href="beowulf.gendoc.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>gendoc</span></div></a></li><li class="depth-2 branch"><a href="beowulf.host.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>host</span></div></a></li><li class="depth-2 branch"><a href="beowulf.interop.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>interop</span></div></a></li><li class="depth-2 branch"><a href="beowulf.io.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>io</span></div></a></li><li class="depth-2 branch"><a href="beowulf.manual.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>manual</span></div></a></li><li class="depth-2 branch"><a href="beowulf.oblist.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>oblist</span></div></a></li><li class="depth-2 branch"><a href="beowulf.read.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>read</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>reader</span></div></div></li><li class="depth-3 branch"><a href="beowulf.reader.char-reader.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>char-reader</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.generate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>generate</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.macros.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>macros</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li><li class="depth-3"><a href="beowulf.reader.simplify.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simplify</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="beowulf.cons-cell.html#var-cons-cell.3F"><div class="inner"><span>cons-cell?</span></div></a></li><li class="depth-1"><a href="beowulf.cons-cell.html#var-F"><div class="inner"><span>F</span></div></a></li><li class="depth-1"><a href="beowulf.cons-cell.html#var-make-beowulf-list"><div class="inner"><span>make-beowulf-list</span></div></a></li><li class="depth-1"><a href="beowulf.cons-cell.html#var-make-cons-cell"><div class="inner"><span>make-cons-cell</span></div></a></li><li class="depth-1"><a href="beowulf.cons-cell.html#var-MutableSequence"><div class="inner"><span>MutableSequence</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html#var-getCar"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>getCar</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html#var-getCdr"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>getCdr</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html#var-getUid"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>getUid</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html#var-rplaca"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>rplaca</span></div></a></li><li class="depth-2"><a href="beowulf.cons-cell.html#var-rplacd"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>rplacd</span></div></a></li><li class="depth-1"><a href="beowulf.cons-cell.html#var-pretty-print"><div class="inner"><span>pretty-print</span></div></a></li><li class="depth-1"><a href="beowulf.cons-cell.html#var-T"><div class="inner"><span>T</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">beowulf.cons-cell</h1><div class="doc"><div class="markdown"><p>The fundamental cons cell on which all Lisp structures are built. Lisp 1.5 lists do not necessarily have a sequence as their CDR, and must have both CAR and CDR mutable, so cannot be implemented on top of Clojure lists.</p></div></div><div class="public anchor" id="var-cons-cell.3F"><h3>cons-cell?</h3><div class="usage"><code>(cons-cell? o)</code></div><div class="doc"><div class="markdown"><p>Is this object <code>o</code> a beowulf cons-cell?</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/cons_cell.clj#L240">view source</a></div></div><div class="public anchor" id="var-F"><h3>F</h3><div class="usage"></div><div class="doc"><div class="markdown"><p>The canonical false value - different from <code>NIL</code>, which is not canonically false in Lisp 1.5.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/cons_cell.clj#L34">view source</a></div></div><div class="public anchor" id="var-make-beowulf-list"><h3>make-beowulf-list</h3><div class="usage"><code>(make-beowulf-list x)</code></div><div class="doc"><div class="markdown"><p>Construct a linked list of cons cells with the same content as the sequence <code>x</code>.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/cons_cell.clj#L254">view source</a></div></div><div class="public anchor" id="var-make-cons-cell"><h3>make-cons-cell</h3><div class="usage"><code>(make-cons-cell car cdr)</code></div><div class="doc"><div class="markdown"><p>Construct a new instance of cons cell with this <code>car</code> and <code>cdr</code>.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/cons_cell.clj#L245">view source</a></div></div><div class="public anchor" id="var-MutableSequence"><h3>MutableSequence</h3><h4 class="type">protocol</h4><div class="usage"></div><div class="doc"><div class="markdown"><p>Like a sequence, but mutable.</p></div></div><div class="members"><h4>members</h4><div class="inner"><div class="public anchor" id="var-getCar"><h3>getCar</h3><div class="usage"><code>(getCar this)</code></div><div class="doc"><div class="markdown"><p>Return the first element of this sequence.</p></div></div></div><div class="public anchor" id="var-getCdr"><h3>getCdr</h3><div class="usage"><code>(getCdr this)</code></div><div class="doc"><div class="markdown"><p>like <code>more</code>, q.v., but returns List <code>NIL</code> not Clojure <code>nil</code> when empty.</p></div></div></div><div class="public anchor" id="var-getUid"><h3>getUid</h3><div class="usage"><code>(getUid this)</code></div><div class="doc"><div class="markdown"><p>Returns a unique identifier for this object</p></div></div></div><div class="public anchor" id="var-rplaca"><h3>rplaca</h3><div class="usage"><code>(rplaca this value)</code></div><div class="doc"><div class="markdown"><p>replace the first element of this sequence with this value</p></div></div></div><div class="public anchor" id="var-rplacd"><h3>rplacd</h3><div class="usage"><code>(rplacd this value)</code></div><div class="doc"><div class="markdown"><p>replace the rest (but-first; cdr) of this sequence with this value</p></div></div></div></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/cons_cell.clj#L41">view source</a></div></div><div class="public anchor" id="var-pretty-print"><h3>pretty-print</h3><div class="usage"><code>(pretty-print cell)</code><code>(pretty-print cell width level)</code></div><div class="doc"><div class="markdown"><p>This isn’t the world’s best pretty printer but it sort of works.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/cons_cell.clj#L206">view source</a></div></div><div class="public anchor" id="var-T"><h3>T</h3><div class="usage"></div><div class="doc"><div class="markdown"><p>The canonical true value.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/cons_cell.clj#L30">view source</a></div></div></div></body></html> \ No newline at end of file diff --git a/docs/codox/beowulf.core.html b/docs/codox/beowulf.core.html index 660d5f5..efc5d77 100644 --- a/docs/codox/beowulf.core.html +++ b/docs/codox/beowulf.core.html @@ -1,3 +1,3 @@ <!DOCTYPE html PUBLIC "" ""> -<html><head><meta charset="UTF-8" /><title>beowulf.core documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Beowulf</span> <span class="project-version">0.3.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="intro.html"><div class="inner"><span>beowulf</span></div></a></li><li class="depth-1 "><a href="mexpr.html"><div class="inner"><span>Interpreting M-Expressions</span></div></a></li><li class="depth-1 "><a href="values.html"><div class="inner"><span>Understanding values and properties</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>beowulf</span></div></div></li><li class="depth-2 branch"><a href="beowulf.bootstrap.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bootstrap</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cons-cell</span></div></a></li><li class="depth-2 branch current"><a href="beowulf.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2 branch"><a href="beowulf.gendoc.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>gendoc</span></div></a></li><li class="depth-2 branch"><a href="beowulf.host.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>host</span></div></a></li><li class="depth-2 branch"><a href="beowulf.io.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>io</span></div></a></li><li class="depth-2 branch"><a href="beowulf.manual.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>manual</span></div></a></li><li class="depth-2 branch"><a href="beowulf.oblist.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>oblist</span></div></a></li><li class="depth-2 branch"><a href="beowulf.read.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>read</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>reader</span></div></div></li><li class="depth-3 branch"><a href="beowulf.reader.char-reader.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>char-reader</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.generate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>generate</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.macros.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>macros</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li><li class="depth-3"><a href="beowulf.reader.simplify.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simplify</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="beowulf.core.html#var--main"><div class="inner"><span>-main</span></div></a></li><li class="depth-1"><a href="beowulf.core.html#var-cli-options"><div class="inner"><span>cli-options</span></div></a></li><li class="depth-1"><a href="beowulf.core.html#var-repl"><div class="inner"><span>repl</span></div></a></li><li class="depth-1"><a href="beowulf.core.html#var-stop-word"><div class="inner"><span>stop-word</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">beowulf.core</h1><div class="doc"><div class="markdown"><p>Essentially, the <code>-main</code> function and the bootstrap read-eval-print loop.</p></div></div><div class="public anchor" id="var--main"><h3>-main</h3><div class="usage"><code>(-main & opts)</code></div><div class="doc"><div class="markdown"><p>Parse options, print the banner, read the init file if any, and enter the read/eval/print loop.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/core.clj#L86">view source</a></div></div><div class="public anchor" id="var-cli-options"><h3>cli-options</h3><div class="usage"></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/core.clj#L35">view source</a></div></div><div class="public anchor" id="var-repl"><h3>repl</h3><div class="usage"><code>(repl prompt)</code></div><div class="doc"><div class="markdown"><p>Read/eval/print loop.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/core.clj#L55">view source</a></div></div><div class="public anchor" id="var-stop-word"><h3>stop-word</h3><div class="usage"></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/core.clj#L33">view source</a></div></div></div></body></html> \ No newline at end of file +<html><head><meta charset="UTF-8" /><title>beowulf.core documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Beowulf</span> <span class="project-version">0.3.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="further_reading.html"><div class="inner"><span>Further Reading</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>beowulf</span></div></a></li><li class="depth-1 "><a href="mexpr.html"><div class="inner"><span>Interpreting M-Expressions</span></div></a></li><li class="depth-1 "><a href="values.html"><div class="inner"><span>The properties of the system, and their values: here be dragons</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>beowulf</span></div></div></li><li class="depth-2 branch"><a href="beowulf.bootstrap.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bootstrap</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cons-cell</span></div></a></li><li class="depth-2 branch current"><a href="beowulf.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2 branch"><a href="beowulf.gendoc.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>gendoc</span></div></a></li><li class="depth-2 branch"><a href="beowulf.host.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>host</span></div></a></li><li class="depth-2 branch"><a href="beowulf.interop.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>interop</span></div></a></li><li class="depth-2 branch"><a href="beowulf.io.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>io</span></div></a></li><li class="depth-2 branch"><a href="beowulf.manual.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>manual</span></div></a></li><li class="depth-2 branch"><a href="beowulf.oblist.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>oblist</span></div></a></li><li class="depth-2 branch"><a href="beowulf.read.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>read</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>reader</span></div></div></li><li class="depth-3 branch"><a href="beowulf.reader.char-reader.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>char-reader</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.generate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>generate</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.macros.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>macros</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li><li class="depth-3"><a href="beowulf.reader.simplify.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simplify</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="beowulf.core.html#var--main"><div class="inner"><span>-main</span></div></a></li><li class="depth-1"><a href="beowulf.core.html#var-cli-options"><div class="inner"><span>cli-options</span></div></a></li><li class="depth-1"><a href="beowulf.core.html#var-repl"><div class="inner"><span>repl</span></div></a></li><li class="depth-1"><a href="beowulf.core.html#var-stop-word"><div class="inner"><span>stop-word</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">beowulf.core</h1><div class="doc"><div class="markdown"><p>Essentially, the <code>-main</code> function and the bootstrap read-eval-print loop.</p></div></div><div class="public anchor" id="var--main"><h3>-main</h3><div class="usage"><code>(-main & opts)</code></div><div class="doc"><div class="markdown"><p>Parse options, print the banner, read the init file if any, and enter the read/eval/print loop.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/core.clj#L91">view source</a></div></div><div class="public anchor" id="var-cli-options"><h3>cli-options</h3><div class="usage"></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/core.clj#L35">view source</a></div></div><div class="public anchor" id="var-repl"><h3>repl</h3><div class="usage"><code>(repl prompt)</code></div><div class="doc"><div class="markdown"><p>Read/eval/print loop.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/core.clj#L60">view source</a></div></div><div class="public anchor" id="var-stop-word"><h3>stop-word</h3><div class="usage"></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/core.clj#L33">view source</a></div></div></div></body></html> \ No newline at end of file diff --git a/docs/codox/beowulf.gendoc.html b/docs/codox/beowulf.gendoc.html index 208efe6..67327f5 100644 --- a/docs/codox/beowulf.gendoc.html +++ b/docs/codox/beowulf.gendoc.html @@ -1,4 +1,4 @@ <!DOCTYPE html PUBLIC "" ""> -<html><head><meta charset="UTF-8" /><title>beowulf.gendoc documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Beowulf</span> <span class="project-version">0.3.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="intro.html"><div class="inner"><span>beowulf</span></div></a></li><li class="depth-1 "><a href="mexpr.html"><div class="inner"><span>Interpreting M-Expressions</span></div></a></li><li class="depth-1 "><a href="values.html"><div class="inner"><span>Understanding values and properties</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>beowulf</span></div></div></li><li class="depth-2 branch"><a href="beowulf.bootstrap.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bootstrap</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cons-cell</span></div></a></li><li class="depth-2 branch"><a href="beowulf.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2 branch current"><a href="beowulf.gendoc.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>gendoc</span></div></a></li><li class="depth-2 branch"><a href="beowulf.host.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>host</span></div></a></li><li class="depth-2 branch"><a href="beowulf.io.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>io</span></div></a></li><li class="depth-2 branch"><a href="beowulf.manual.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>manual</span></div></a></li><li class="depth-2 branch"><a href="beowulf.oblist.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>oblist</span></div></a></li><li class="depth-2 branch"><a href="beowulf.read.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>read</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>reader</span></div></div></li><li class="depth-3 branch"><a href="beowulf.reader.char-reader.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>char-reader</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.generate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>generate</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.macros.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>macros</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li><li class="depth-3"><a href="beowulf.reader.simplify.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simplify</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="beowulf.gendoc.html#var-find-documentation"><div class="inner"><span>find-documentation</span></div></a></li><li class="depth-1"><a href="beowulf.gendoc.html#var-gen-doc-table"><div class="inner"><span>gen-doc-table</span></div></a></li><li class="depth-1"><a href="beowulf.gendoc.html#var-gen-index"><div class="inner"><span>gen-index</span></div></a></li><li class="depth-1"><a href="beowulf.gendoc.html#var-host-functions"><div class="inner"><span>host-functions</span></div></a></li><li class="depth-1"><a href="beowulf.gendoc.html#var-infer-implementation"><div class="inner"><span>infer-implementation</span></div></a></li><li class="depth-1"><a href="beowulf.gendoc.html#var-infer-signature"><div class="inner"><span>infer-signature</span></div></a></li><li class="depth-1"><a href="beowulf.gendoc.html#var-infer-type"><div class="inner"><span>infer-type</span></div></a></li><li class="depth-1"><a href="beowulf.gendoc.html#var-open-doc"><div class="inner"><span>open-doc</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">beowulf.gendoc</h1><div class="doc"><div class="markdown"><p>Generate table of documentation of Lisp symbols and functions.</p> +<html><head><meta charset="UTF-8" /><title>beowulf.gendoc documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Beowulf</span> <span class="project-version">0.3.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="further_reading.html"><div class="inner"><span>Further Reading</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>beowulf</span></div></a></li><li class="depth-1 "><a href="mexpr.html"><div class="inner"><span>Interpreting M-Expressions</span></div></a></li><li class="depth-1 "><a href="values.html"><div class="inner"><span>The properties of the system, and their values: here be dragons</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>beowulf</span></div></div></li><li class="depth-2 branch"><a href="beowulf.bootstrap.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bootstrap</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cons-cell</span></div></a></li><li class="depth-2 branch"><a href="beowulf.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2 branch current"><a href="beowulf.gendoc.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>gendoc</span></div></a></li><li class="depth-2 branch"><a href="beowulf.host.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>host</span></div></a></li><li class="depth-2 branch"><a href="beowulf.interop.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>interop</span></div></a></li><li class="depth-2 branch"><a href="beowulf.io.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>io</span></div></a></li><li class="depth-2 branch"><a href="beowulf.manual.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>manual</span></div></a></li><li class="depth-2 branch"><a href="beowulf.oblist.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>oblist</span></div></a></li><li class="depth-2 branch"><a href="beowulf.read.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>read</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>reader</span></div></div></li><li class="depth-3 branch"><a href="beowulf.reader.char-reader.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>char-reader</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.generate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>generate</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.macros.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>macros</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li><li class="depth-3"><a href="beowulf.reader.simplify.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simplify</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="beowulf.gendoc.html#var-find-documentation"><div class="inner"><span>find-documentation</span></div></a></li><li class="depth-1"><a href="beowulf.gendoc.html#var-gen-doc-table"><div class="inner"><span>gen-doc-table</span></div></a></li><li class="depth-1"><a href="beowulf.gendoc.html#var-gen-index"><div class="inner"><span>gen-index</span></div></a></li><li class="depth-1"><a href="beowulf.gendoc.html#var-host-functions"><div class="inner"><span>host-functions</span></div></a></li><li class="depth-1"><a href="beowulf.gendoc.html#var-infer-implementation"><div class="inner"><span>infer-implementation</span></div></a></li><li class="depth-1"><a href="beowulf.gendoc.html#var-infer-signature"><div class="inner"><span>infer-signature</span></div></a></li><li class="depth-1"><a href="beowulf.gendoc.html#var-infer-type"><div class="inner"><span>infer-type</span></div></a></li><li class="depth-1"><a href="beowulf.gendoc.html#var-open-doc"><div class="inner"><span>open-doc</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">beowulf.gendoc</h1><div class="doc"><div class="markdown"><p>Generate table of documentation of Lisp symbols and functions.</p> <p>NOTE: this is <em>very</em> hacky. You almost certainly do not want to use this!</p></div></div><div class="public anchor" id="var-find-documentation"><h3>find-documentation</h3><div class="usage"><code>(find-documentation entry)</code></div><div class="doc"><div class="markdown"><p>Find appropriate documentation for this <code>entry</code> from the oblist.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/gendoc.clj#L110">view source</a></div></div><div class="public anchor" id="var-gen-doc-table"><h3>gen-doc-table</h3><div class="usage"><code>(gen-doc-table)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/gendoc.clj#L121">view source</a></div></div><div class="public anchor" id="var-gen-index"><h3>gen-index</h3><div class="usage"><code>(gen-index)</code><code>(gen-index url destination)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/gendoc.clj#L144">view source</a></div></div><div class="public anchor" id="var-host-functions"><h3>host-functions</h3><div class="usage"></div><div class="doc"><div class="markdown"><p>Functions which we can infer are written in Clojure. We need to collect these at run-time, not compile time, hence memoised function, not variable.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/gendoc.clj#L33">view source</a></div></div><div class="public anchor" id="var-infer-implementation"><h3>infer-implementation</h3><div class="usage"><code>(infer-implementation entry)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/gendoc.clj#L103">view source</a></div></div><div class="public anchor" id="var-infer-signature"><h3>infer-signature</h3><div class="usage"><code>(infer-signature entry)</code></div><div class="doc"><div class="markdown"><p>Infer the signature of the function value of this oblist <code>entry</code>, if any.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/gendoc.clj#L93">view source</a></div></div><div class="public anchor" id="var-infer-type"><h3>infer-type</h3><div class="usage"><code>(infer-type entry)</code></div><div class="doc"><div class="markdown"><p>Try to work out what this <code>entry</code> from the oblist actually represents.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/gendoc.clj#L68">view source</a></div></div><div class="public anchor" id="var-open-doc"><h3>open-doc</h3><div class="usage"><code>(open-doc symbol)</code></div><div class="doc"><div class="markdown"><p>Open the documentation page for this <code>symbol</code>, if known, in the default web browser.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/gendoc.clj#L157">view source</a></div></div></div></body></html> \ No newline at end of file diff --git a/docs/codox/beowulf.host.html b/docs/codox/beowulf.host.html index c22765d..3628eb6 100644 --- a/docs/codox/beowulf.host.html +++ b/docs/codox/beowulf.host.html @@ -1,14 +1,19 @@ <!DOCTYPE html PUBLIC "" ""> -<html><head><meta charset="UTF-8" /><title>beowulf.host documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Beowulf</span> <span class="project-version">0.3.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="intro.html"><div class="inner"><span>beowulf</span></div></a></li><li class="depth-1 "><a href="mexpr.html"><div class="inner"><span>Interpreting M-Expressions</span></div></a></li><li class="depth-1 "><a href="values.html"><div class="inner"><span>Understanding values and properties</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>beowulf</span></div></div></li><li class="depth-2 branch"><a href="beowulf.bootstrap.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bootstrap</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cons-cell</span></div></a></li><li class="depth-2 branch"><a href="beowulf.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2 branch"><a href="beowulf.gendoc.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>gendoc</span></div></a></li><li class="depth-2 branch current"><a href="beowulf.host.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>host</span></div></a></li><li class="depth-2 branch"><a href="beowulf.io.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>io</span></div></a></li><li class="depth-2 branch"><a href="beowulf.manual.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>manual</span></div></a></li><li class="depth-2 branch"><a href="beowulf.oblist.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>oblist</span></div></a></li><li class="depth-2 branch"><a href="beowulf.read.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>read</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>reader</span></div></div></li><li class="depth-3 branch"><a href="beowulf.reader.char-reader.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>char-reader</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.generate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>generate</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.macros.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>macros</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li><li class="depth-3"><a href="beowulf.reader.simplify.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simplify</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="beowulf.host.html#var-ADD1"><div class="inner"><span>ADD1</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-AND"><div class="inner"><span>AND</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-ASSOC"><div class="inner"><span>ASSOC</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-ATOM"><div class="inner"><span>ATOM</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-ATOM.3F"><div class="inner"><span>ATOM?</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CAAAAR"><div class="inner"><span>CAAAAR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CAAADR"><div class="inner"><span>CAAADR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CAAAR"><div class="inner"><span>CAAAR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CAADAR"><div class="inner"><span>CAADAR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CAADDR"><div class="inner"><span>CAADDR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CAADR"><div class="inner"><span>CAADR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CAAR"><div class="inner"><span>CAAR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CADAAR"><div class="inner"><span>CADAAR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CADADR"><div class="inner"><span>CADADR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CADAR"><div class="inner"><span>CADAR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CADDAR"><div class="inner"><span>CADDAR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CADDDR"><div class="inner"><span>CADDDR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CADDR"><div class="inner"><span>CADDR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CADR"><div class="inner"><span>CADR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CAR"><div class="inner"><span>CAR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CDAAAR"><div class="inner"><span>CDAAAR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CDAADR"><div class="inner"><span>CDAADR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CDAAR"><div class="inner"><span>CDAAR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CDADAR"><div class="inner"><span>CDADAR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CDADDR"><div class="inner"><span>CDADDR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CDADR"><div class="inner"><span>CDADR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CDAR"><div class="inner"><span>CDAR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CDDAAR"><div class="inner"><span>CDDAAR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CDDADR"><div class="inner"><span>CDDADR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CDDAR"><div class="inner"><span>CDDAR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CDDDAR"><div class="inner"><span>CDDDAR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CDDDDR"><div class="inner"><span>CDDDDR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CDDDR"><div class="inner"><span>CDDDR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CDDR"><div class="inner"><span>CDDR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CDR"><div class="inner"><span>CDR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CONS"><div class="inner"><span>CONS</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CONSP"><div class="inner"><span>CONSP</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-DEFINE"><div class="inner"><span>DEFINE</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-DIFFERENCE"><div class="inner"><span>DIFFERENCE</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-DOC"><div class="inner"><span>DOC</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-EQ"><div class="inner"><span>EQ</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-EQUAL"><div class="inner"><span>EQUAL</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-ERROR"><div class="inner"><span>ERROR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-FIXP"><div class="inner"><span>FIXP</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-GENSYM"><div class="inner"><span>GENSYM</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-GREATERP"><div class="inner"><span>GREATERP</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-lax.3F"><div class="inner"><span>lax?</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-LESSP"><div class="inner"><span>LESSP</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-LIST"><div class="inner"><span>LIST</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-NILP"><div class="inner"><span>NILP</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-NULL"><div class="inner"><span>NULL</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-NUMBERP"><div class="inner"><span>NUMBERP</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-OBLIST"><div class="inner"><span>OBLIST</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-PAIRLIS"><div class="inner"><span>PAIRLIS</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-PLUS"><div class="inner"><span>PLUS</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-QUOTIENT"><div class="inner"><span>QUOTIENT</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-REMAINDER"><div class="inner"><span>REMAINDER</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-RPLACA"><div class="inner"><span>RPLACA</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-RPLACD"><div class="inner"><span>RPLACD</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-SET"><div class="inner"><span>SET</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-SUB1"><div class="inner"><span>SUB1</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-TIMES"><div class="inner"><span>TIMES</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-TRACE"><div class="inner"><span>TRACE</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-traced-symbols"><div class="inner"><span>traced-symbols</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-traced.3F"><div class="inner"><span>traced?</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-uaf"><div class="inner"><span>uaf</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-UNTRACE"><div class="inner"><span>UNTRACE</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">beowulf.host</h1><div class="doc"><div class="markdown"><p>provides Lisp 1.5 functions which can’t be (or can’t efficiently be) implemented in Lisp 1.5, which therefore need to be implemented in the host language, in this case Clojure.</p></div></div><div class="public anchor" id="var-ADD1"><h3>ADD1</h3><div class="usage"><code>(ADD1 x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L344">view source</a></div></div><div class="public anchor" id="var-AND"><h3>AND</h3><div class="usage"><code>(AND & args)</code></div><div class="doc"><div class="markdown"><p><code>T</code> if and only if none of my <code>args</code> evaluate to either <code>F</code> or <code>NIL</code>, else <code>F</code>.</p> -<p>In <code>beowulf.host</code> principally because I don’t yet feel confident to define varargs functions in Lisp.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L256">view source</a></div></div><div class="public anchor" id="var-ASSOC"><h3>ASSOC</h3><div class="usage"><code>(ASSOC x a)</code></div><div class="doc"><div class="markdown"><p>If a is an association list such as the one formed by PAIRLIS in the above example, then assoc will produce the first pair whose first term is x. Thus it is a table searching function.</p> +<html><head><meta charset="UTF-8" /><title>beowulf.host documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Beowulf</span> <span class="project-version">0.3.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="further_reading.html"><div class="inner"><span>Further Reading</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>beowulf</span></div></a></li><li class="depth-1 "><a href="mexpr.html"><div class="inner"><span>Interpreting M-Expressions</span></div></a></li><li class="depth-1 "><a href="values.html"><div class="inner"><span>The properties of the system, and their values: here be dragons</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>beowulf</span></div></div></li><li class="depth-2 branch"><a href="beowulf.bootstrap.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bootstrap</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cons-cell</span></div></a></li><li class="depth-2 branch"><a href="beowulf.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2 branch"><a href="beowulf.gendoc.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>gendoc</span></div></a></li><li class="depth-2 branch current"><a href="beowulf.host.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>host</span></div></a></li><li class="depth-2 branch"><a href="beowulf.interop.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>interop</span></div></a></li><li class="depth-2 branch"><a href="beowulf.io.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>io</span></div></a></li><li class="depth-2 branch"><a href="beowulf.manual.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>manual</span></div></a></li><li class="depth-2 branch"><a href="beowulf.oblist.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>oblist</span></div></a></li><li class="depth-2 branch"><a href="beowulf.read.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>read</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>reader</span></div></div></li><li class="depth-3 branch"><a href="beowulf.reader.char-reader.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>char-reader</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.generate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>generate</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.macros.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>macros</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li><li class="depth-3"><a href="beowulf.reader.simplify.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simplify</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="beowulf.host.html#var-ADD1"><div class="inner"><span>ADD1</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-AND"><div class="inner"><span>AND</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-ASSOC"><div class="inner"><span>ASSOC</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-ATOM"><div class="inner"><span>ATOM</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-ATOM.3F"><div class="inner"><span>ATOM?</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CAAAAR"><div class="inner"><span>CAAAAR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CAAADR"><div class="inner"><span>CAAADR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CAAAR"><div class="inner"><span>CAAAR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CAADAR"><div class="inner"><span>CAADAR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CAADDR"><div class="inner"><span>CAADDR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CAADR"><div class="inner"><span>CAADR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CAAR"><div class="inner"><span>CAAR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CADAAR"><div class="inner"><span>CADAAR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CADADR"><div class="inner"><span>CADADR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CADAR"><div class="inner"><span>CADAR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CADDAR"><div class="inner"><span>CADDAR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CADDDR"><div class="inner"><span>CADDDR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CADDR"><div class="inner"><span>CADDR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CADR"><div class="inner"><span>CADR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CAR"><div class="inner"><span>CAR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CDAAAR"><div class="inner"><span>CDAAAR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CDAADR"><div class="inner"><span>CDAADR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CDAAR"><div class="inner"><span>CDAAR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CDADAR"><div class="inner"><span>CDADAR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CDADDR"><div class="inner"><span>CDADDR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CDADR"><div class="inner"><span>CDADR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CDAR"><div class="inner"><span>CDAR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CDDAAR"><div class="inner"><span>CDDAAR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CDDADR"><div class="inner"><span>CDDADR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CDDAR"><div class="inner"><span>CDDAR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CDDDAR"><div class="inner"><span>CDDDAR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CDDDDR"><div class="inner"><span>CDDDDR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CDDDR"><div class="inner"><span>CDDDR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CDDR"><div class="inner"><span>CDDR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CDR"><div class="inner"><span>CDR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CONS"><div class="inner"><span>CONS</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-CONSP"><div class="inner"><span>CONSP</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-DEFINE"><div class="inner"><span>DEFINE</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-DEFLIST"><div class="inner"><span>DEFLIST</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-DIFFERENCE"><div class="inner"><span>DIFFERENCE</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-DOC"><div class="inner"><span>DOC</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-EQ"><div class="inner"><span>EQ</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-EQUAL"><div class="inner"><span>EQUAL</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-ERROR"><div class="inner"><span>ERROR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-FIXP"><div class="inner"><span>FIXP</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-GENSYM"><div class="inner"><span>GENSYM</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-GET"><div class="inner"><span>GET</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-GREATERP"><div class="inner"><span>GREATERP</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-lax.3F"><div class="inner"><span>lax?</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-LESSP"><div class="inner"><span>LESSP</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-LIST"><div class="inner"><span>LIST</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-magic-marker"><div class="inner"><span>magic-marker</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-NILP"><div class="inner"><span>NILP</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-NULL"><div class="inner"><span>NULL</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-NUMBERP"><div class="inner"><span>NUMBERP</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-OBLIST"><div class="inner"><span>OBLIST</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-OR"><div class="inner"><span>OR</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-PAIRLIS"><div class="inner"><span>PAIRLIS</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-PLUS"><div class="inner"><span>PLUS</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-PUT"><div class="inner"><span>PUT</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-QUOTIENT"><div class="inner"><span>QUOTIENT</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-REMAINDER"><div class="inner"><span>REMAINDER</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-RPLACA"><div class="inner"><span>RPLACA</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-RPLACD"><div class="inner"><span>RPLACD</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-SET"><div class="inner"><span>SET</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-SUB1"><div class="inner"><span>SUB1</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-TIMES"><div class="inner"><span>TIMES</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-TRACE"><div class="inner"><span>TRACE</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-traced-symbols"><div class="inner"><span>traced-symbols</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-traced.3F"><div class="inner"><span>traced?</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-uaf"><div class="inner"><span>uaf</span></div></a></li><li class="depth-1"><a href="beowulf.host.html#var-UNTRACE"><div class="inner"><span>UNTRACE</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">beowulf.host</h1><div class="doc"><div class="markdown"><p>provides Lisp 1.5 functions which can’t be (or can’t efficiently be) implemented in Lisp 1.5, which therefore need to be implemented in the host language, in this case Clojure.</p></div></div><div class="public anchor" id="var-ADD1"><h3>ADD1</h3><div class="usage"><code>(ADD1 x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L383">view source</a></div></div><div class="public anchor" id="var-AND"><h3>AND</h3><div class="usage"><code>(AND & args)</code></div><div class="doc"><div class="markdown"><p><code>T</code> if and only if none of my <code>args</code> evaluate to either <code>F</code> or <code>NIL</code>, else <code>F</code>.</p> +<p>In <code>beowulf.host</code> principally because I don’t yet feel confident to define varargs functions in Lisp.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L284">view source</a></div></div><div class="public anchor" id="var-ASSOC"><h3>ASSOC</h3><div class="usage"><code>(ASSOC x a)</code></div><div class="doc"><div class="markdown"><p>If a is an association list such as the one formed by PAIRLIS in the above example, then assoc will produce the first pair whose first term is x. Thus it is a table searching function.</p> <p>All args are assumed to be <code>beowulf.cons-cell/ConsCell</code> objects. See page 12 of the Lisp 1.5 Programmers Manual.</p> -<p><strong>NOTE THAT</strong> this function is overridden by an implementation in Lisp, but is currently still present for bootstrapping.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L271">view source</a></div></div><div class="public anchor" id="var-ATOM"><h3>ATOM</h3><div class="usage"><code>(ATOM x)</code></div><div class="doc"><div class="markdown"><p>Returns <code>T</code> if and only if the argument <code>x</code> is bound to an atom; else <code>F</code>. It is not clear to me from the documentation whether <code>(ATOM 7)</code> should return <code>T</code> or <code>F</code>. I’m going to assume <code>T</code>.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L220">view source</a></div></div><div class="public anchor" id="var-ATOM.3F"><h3>ATOM?</h3><h4 class="type">macro</h4><div class="usage"><code>(ATOM? x)</code></div><div class="doc"><div class="markdown"><p>The convention of returning <code>F</code> from predicates, rather than <code>NIL</code>, is going to tie me in knots. This is a variant of <code>ATOM</code> which returns <code>NIL</code> on failure.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L227">view source</a></div></div><div class="public anchor" id="var-CAAAAR"><h3>CAAAAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CAAAAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L137">view source</a></div></div><div class="public anchor" id="var-CAAADR"><h3>CAAADR</h3><h4 class="type">macro</h4><div class="usage"><code>(CAAADR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L145">view source</a></div></div><div class="public anchor" id="var-CAAAR"><h3>CAAAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CAAAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L128">view source</a></div></div><div class="public anchor" id="var-CAADAR"><h3>CAADAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CAADAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L138">view source</a></div></div><div class="public anchor" id="var-CAADDR"><h3>CAADDR</h3><h4 class="type">macro</h4><div class="usage"><code>(CAADDR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L146">view source</a></div></div><div class="public anchor" id="var-CAADR"><h3>CAADR</h3><h4 class="type">macro</h4><div class="usage"><code>(CAADR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L129">view source</a></div></div><div class="public anchor" id="var-CAAR"><h3>CAAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CAAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L123">view source</a></div></div><div class="public anchor" id="var-CADAAR"><h3>CADAAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CADAAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L139">view source</a></div></div><div class="public anchor" id="var-CADADR"><h3>CADADR</h3><h4 class="type">macro</h4><div class="usage"><code>(CADADR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L147">view source</a></div></div><div class="public anchor" id="var-CADAR"><h3>CADAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CADAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L130">view source</a></div></div><div class="public anchor" id="var-CADDAR"><h3>CADDAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CADDAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L140">view source</a></div></div><div class="public anchor" id="var-CADDDR"><h3>CADDDR</h3><h4 class="type">macro</h4><div class="usage"><code>(CADDDR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L148">view source</a></div></div><div class="public anchor" id="var-CADDR"><h3>CADDR</h3><h4 class="type">macro</h4><div class="usage"><code>(CADDR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L131">view source</a></div></div><div class="public anchor" id="var-CADR"><h3>CADR</h3><h4 class="type">macro</h4><div class="usage"><code>(CADR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L124">view source</a></div></div><div class="public anchor" id="var-CAR"><h3>CAR</h3><div class="usage"><code>(CAR x)</code></div><div class="doc"><div class="markdown"><p>Return the item indicated by the first pointer of a pair. NIL is treated specially: the CAR of NIL is NIL.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L58">view source</a></div></div><div class="public anchor" id="var-CDAAAR"><h3>CDAAAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDAAAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L143">view source</a></div></div><div class="public anchor" id="var-CDAADR"><h3>CDAADR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDAADR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L151">view source</a></div></div><div class="public anchor" id="var-CDAAR"><h3>CDAAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDAAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L134">view source</a></div></div><div class="public anchor" id="var-CDADAR"><h3>CDADAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDADAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L144">view source</a></div></div><div class="public anchor" id="var-CDADDR"><h3>CDADDR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDADDR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L152">view source</a></div></div><div class="public anchor" id="var-CDADR"><h3>CDADR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDADR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L135">view source</a></div></div><div class="public anchor" id="var-CDAR"><h3>CDAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L126">view source</a></div></div><div class="public anchor" id="var-CDDAAR"><h3>CDDAAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDDAAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L141">view source</a></div></div><div class="public anchor" id="var-CDDADR"><h3>CDDADR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDDADR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L149">view source</a></div></div><div class="public anchor" id="var-CDDAR"><h3>CDDAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDDAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L132">view source</a></div></div><div class="public anchor" id="var-CDDDAR"><h3>CDDDAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDDDAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L142">view source</a></div></div><div class="public anchor" id="var-CDDDDR"><h3>CDDDDR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDDDDR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L150">view source</a></div></div><div class="public anchor" id="var-CDDDR"><h3>CDDDR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDDDR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L133">view source</a></div></div><div class="public anchor" id="var-CDDR"><h3>CDDR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDDR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L125">view source</a></div></div><div class="public anchor" id="var-CDR"><h3>CDR</h3><div class="usage"><code>(CDR x)</code></div><div class="doc"><div class="markdown"><p>Return the item indicated by the second pointer of a pair. NIL is treated specially: the CDR of NIL is NIL.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L78">view source</a></div></div><div class="public anchor" id="var-CONS"><h3>CONS</h3><div class="usage"><code>(CONS car cdr)</code></div><div class="doc"><div class="markdown"><p>Construct a new instance of cons cell with this <code>car</code> and <code>cdr</code>.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L53">view source</a></div></div><div class="public anchor" id="var-CONSP"><h3>CONSP</h3><div class="usage"><code>(CONSP o)</code></div><div class="doc"><div class="markdown"><p>Return <code>T</code> if object <code>o</code> is a cons cell, else <code>F</code>.</p> -<p><strong>NOTE THAT</strong> this is an extension function, not available in strct mode. I believe that Lisp 1.5 did not have any mechanism for testing whether an argument was, or was not, a cons cell.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L465">view source</a></div></div><div class="public anchor" id="var-DEFINE"><h3>DEFINE</h3><div class="usage"><code>(DEFINE args)</code></div><div class="doc"><div class="markdown"><p>Bootstrap-only version of <code>DEFINE</code> which, post boostrap, can be overwritten in LISP. </p> -<p>The single argument to <code>DEFINE</code> should be an assoc list which should be nconc’ed onto the front of the oblist. Broadly, (SETQ OBLIST (NCONC ARG1 OBLIST))</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L397">view source</a></div></div><div class="public anchor" id="var-DIFFERENCE"><h3>DIFFERENCE</h3><div class="usage"><code>(DIFFERENCE x y)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L327">view source</a></div></div><div class="public anchor" id="var-DOC"><h3>DOC</h3><div class="usage"><code>(DOC symbol)</code></div><div class="doc"><div class="markdown"><p>Open the page for this <code>symbol</code> in the Lisp 1.5 manual, if known, in the default web browser.</p> -<p><strong>NOTE THAT</strong> this is an extension function, not available in strct mode.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L456">view source</a></div></div><div class="public anchor" id="var-EQ"><h3>EQ</h3><div class="usage"><code>(EQ x y)</code></div><div class="doc"><div class="markdown"><p>Returns <code>T</code> if and only if both <code>x</code> and <code>y</code> are bound to the same atom, else <code>NIL</code>.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L234">view source</a></div></div><div class="public anchor" id="var-EQUAL"><h3>EQUAL</h3><div class="usage"><code>(EQUAL x y)</code></div><div class="doc"><div class="markdown"><p>This is a predicate that is true if its two arguments are identical S-expressions, and false if they are different. (The elementary predicate <code>EQ</code> is defined only for atomic arguments.) The definition of <code>EQUAL</code> is an example of a conditional expression inside a conditional expression.</p> -<p>NOTE: returns <code>F</code> on failure, not <code>NIL</code></p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L243">view source</a></div></div><div class="public anchor" id="var-ERROR"><h3>ERROR</h3><div class="usage"><code>(ERROR & args)</code></div><div class="doc"><div class="markdown"><p>Throw an error</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L375">view source</a></div></div><div class="public anchor" id="var-FIXP"><h3>FIXP</h3><div class="usage"><code>(FIXP x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L352">view source</a></div></div><div class="public anchor" id="var-GENSYM"><h3>GENSYM</h3><div class="usage"><code>(GENSYM)</code></div><div class="doc"><div class="markdown"><p>Generate a unique symbol.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L370">view source</a></div></div><div class="public anchor" id="var-GREATERP"><h3>GREATERP</h3><div class="usage"><code>(GREATERP x y)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L364">view source</a></div></div><div class="public anchor" id="var-lax.3F"><h3>lax?</h3><div class="usage"><code>(lax? symbol)</code></div><div class="doc"><div class="markdown"><p>Are we in lax mode? If so. return true; is not, throw an exception with this <code>symbol</code>.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L40">view source</a></div></div><div class="public anchor" id="var-LESSP"><h3>LESSP</h3><div class="usage"><code>(LESSP x y)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L360">view source</a></div></div><div class="public anchor" id="var-LIST"><h3>LIST</h3><div class="usage"><code>(LIST & args)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L204">view source</a></div></div><div class="public anchor" id="var-NILP"><h3>NILP</h3><h4 class="type">macro</h4><div class="usage"><code>(NILP x)</code></div><div class="doc"><div class="markdown"><p>Not part of LISP 1.5: <code>T</code> if <code>o</code> is <code>NIL</code>, else <code>NIL</code>.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L215">view source</a></div></div><div class="public anchor" id="var-NULL"><h3>NULL</h3><h4 class="type">macro</h4><div class="usage"><code>(NULL x)</code></div><div class="doc"><div class="markdown"><p>Returns <code>T</code> if and only if the argument <code>x</code> is bound to <code>NIL</code>; else <code>F</code>.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L210">view source</a></div></div><div class="public anchor" id="var-NUMBERP"><h3>NUMBERP</h3><div class="usage"><code>(NUMBERP x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L356">view source</a></div></div><div class="public anchor" id="var-OBLIST"><h3>OBLIST</h3><div class="usage"><code>(OBLIST)</code></div><div class="doc"><div class="markdown"><p>Return a list of the symbols currently bound on the object list.</p> -<p><strong>NOTE THAT</strong> in the Lisp 1.5 manual, footnote at the bottom of page 69, it implies that an argument can be passed but I’m not sure of the semantics of this.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L386">view source</a></div></div><div class="public anchor" id="var-PAIRLIS"><h3>PAIRLIS</h3><div class="usage"><code>(PAIRLIS x y a)</code></div><div class="doc"><div class="markdown"><p>This function gives the list of pairs of corresponding elements of the lists <code>x</code> and <code>y</code>, and APPENDs this to the list <code>a</code>. The resultant list of pairs, which is like a table with two columns, is called an association list.</p> +<p><strong>NOTE THAT</strong> this function is overridden by an implementation in Lisp, but is currently still present for bootstrapping.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L310">view source</a></div></div><div class="public anchor" id="var-ATOM"><h3>ATOM</h3><div class="usage"><code>(ATOM x)</code></div><div class="doc"><div class="markdown"><p>Returns <code>T</code> if and only if the argument <code>x</code> is bound to an atom; else <code>F</code>. It is not clear to me from the documentation whether <code>(ATOM 7)</code> should return <code>T</code> or <code>F</code>. I’m going to assume <code>T</code>.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L248">view source</a></div></div><div class="public anchor" id="var-ATOM.3F"><h3>ATOM?</h3><h4 class="type">macro</h4><div class="usage"><code>(ATOM? x)</code></div><div class="doc"><div class="markdown"><p>The convention of returning <code>F</code> from predicates, rather than <code>NIL</code>, is going to tie me in knots. This is a variant of <code>ATOM</code> which returns <code>NIL</code> on failure.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L255">view source</a></div></div><div class="public anchor" id="var-CAAAAR"><h3>CAAAAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CAAAAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L135">view source</a></div></div><div class="public anchor" id="var-CAAADR"><h3>CAAADR</h3><h4 class="type">macro</h4><div class="usage"><code>(CAAADR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L143">view source</a></div></div><div class="public anchor" id="var-CAAAR"><h3>CAAAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CAAAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L126">view source</a></div></div><div class="public anchor" id="var-CAADAR"><h3>CAADAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CAADAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L136">view source</a></div></div><div class="public anchor" id="var-CAADDR"><h3>CAADDR</h3><h4 class="type">macro</h4><div class="usage"><code>(CAADDR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L144">view source</a></div></div><div class="public anchor" id="var-CAADR"><h3>CAADR</h3><h4 class="type">macro</h4><div class="usage"><code>(CAADR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L127">view source</a></div></div><div class="public anchor" id="var-CAAR"><h3>CAAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CAAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L121">view source</a></div></div><div class="public anchor" id="var-CADAAR"><h3>CADAAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CADAAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L137">view source</a></div></div><div class="public anchor" id="var-CADADR"><h3>CADADR</h3><h4 class="type">macro</h4><div class="usage"><code>(CADADR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L145">view source</a></div></div><div class="public anchor" id="var-CADAR"><h3>CADAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CADAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L128">view source</a></div></div><div class="public anchor" id="var-CADDAR"><h3>CADDAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CADDAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L138">view source</a></div></div><div class="public anchor" id="var-CADDDR"><h3>CADDDR</h3><h4 class="type">macro</h4><div class="usage"><code>(CADDDR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L146">view source</a></div></div><div class="public anchor" id="var-CADDR"><h3>CADDR</h3><h4 class="type">macro</h4><div class="usage"><code>(CADDR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L129">view source</a></div></div><div class="public anchor" id="var-CADR"><h3>CADR</h3><h4 class="type">macro</h4><div class="usage"><code>(CADR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L122">view source</a></div></div><div class="public anchor" id="var-CAR"><h3>CAR</h3><div class="usage"><code>(CAR x)</code></div><div class="doc"><div class="markdown"><p>Return the item indicated by the first pointer of a pair. NIL is treated specially: the CAR of NIL is NIL.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L56">view source</a></div></div><div class="public anchor" id="var-CDAAAR"><h3>CDAAAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDAAAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L141">view source</a></div></div><div class="public anchor" id="var-CDAADR"><h3>CDAADR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDAADR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L149">view source</a></div></div><div class="public anchor" id="var-CDAAR"><h3>CDAAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDAAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L132">view source</a></div></div><div class="public anchor" id="var-CDADAR"><h3>CDADAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDADAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L142">view source</a></div></div><div class="public anchor" id="var-CDADDR"><h3>CDADDR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDADDR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L150">view source</a></div></div><div class="public anchor" id="var-CDADR"><h3>CDADR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDADR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L133">view source</a></div></div><div class="public anchor" id="var-CDAR"><h3>CDAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L124">view source</a></div></div><div class="public anchor" id="var-CDDAAR"><h3>CDDAAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDDAAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L139">view source</a></div></div><div class="public anchor" id="var-CDDADR"><h3>CDDADR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDDADR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L147">view source</a></div></div><div class="public anchor" id="var-CDDAR"><h3>CDDAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDDAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L130">view source</a></div></div><div class="public anchor" id="var-CDDDAR"><h3>CDDDAR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDDDAR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L140">view source</a></div></div><div class="public anchor" id="var-CDDDDR"><h3>CDDDDR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDDDDR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L148">view source</a></div></div><div class="public anchor" id="var-CDDDR"><h3>CDDDR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDDDR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L131">view source</a></div></div><div class="public anchor" id="var-CDDR"><h3>CDDR</h3><h4 class="type">macro</h4><div class="usage"><code>(CDDR x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L123">view source</a></div></div><div class="public anchor" id="var-CDR"><h3>CDR</h3><div class="usage"><code>(CDR x)</code></div><div class="doc"><div class="markdown"><p>Return the item indicated by the second pointer of a pair. NIL is treated specially: the CDR of NIL is NIL.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L76">view source</a></div></div><div class="public anchor" id="var-CONS"><h3>CONS</h3><div class="usage"><code>(CONS car cdr)</code></div><div class="doc"><div class="markdown"><p>Construct a new instance of cons cell with this <code>car</code> and <code>cdr</code>.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L51">view source</a></div></div><div class="public anchor" id="var-CONSP"><h3>CONSP</h3><div class="usage"><code>(CONSP o)</code></div><div class="doc"><div class="markdown"><p>Return <code>T</code> if object <code>o</code> is a cons cell, else <code>F</code>.</p> +<p><strong>NOTE THAT</strong> this is an extension function, not available in strct mode. I believe that Lisp 1.5 did not have any mechanism for testing whether an argument was, or was not, a cons cell.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L560">view source</a></div></div><div class="public anchor" id="var-DEFINE"><h3>DEFINE</h3><div class="usage"><code>(DEFINE a-list)</code></div><div class="doc"><div class="markdown"><p>Bootstrap-only version of <code>DEFINE</code> which, post boostrap, can be overwritten in LISP. </p> +<p>The single argument to <code>DEFINE</code> should be an association list of symbols to lambda functions. See page 58 of the manual.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L503">view source</a></div></div><div class="public anchor" id="var-DEFLIST"><h3>DEFLIST</h3><div class="usage"><code>(DEFLIST a-list indicator)</code></div><div class="doc"><div class="markdown"><p>For each pair in this association list <code>a-list</code>, set the property with this <code>indicator</code> of the symbol which is the first element of the pair to the value which is the second element of the pair. See page 58 of the manual.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L494">view source</a></div></div><div class="public anchor" id="var-DIFFERENCE"><h3>DIFFERENCE</h3><div class="usage"><code>(DIFFERENCE x y)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L366">view source</a></div></div><div class="public anchor" id="var-DOC"><h3>DOC</h3><div class="usage"><code>(DOC symbol)</code></div><div class="doc"><div class="markdown"><p>Open the page for this <code>symbol</code> in the Lisp 1.5 manual, if known, in the default web browser.</p> +<p><strong>NOTE THAT</strong> this is an extension function, not available in strct mode.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L551">view source</a></div></div><div class="public anchor" id="var-EQ"><h3>EQ</h3><div class="usage"><code>(EQ x y)</code></div><div class="doc"><div class="markdown"><p>Returns <code>T</code> if and only if both <code>x</code> and <code>y</code> are bound to the same atom, else <code>NIL</code>.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L262">view source</a></div></div><div class="public anchor" id="var-EQUAL"><h3>EQUAL</h3><div class="usage"><code>(EQUAL x y)</code></div><div class="doc"><div class="markdown"><p>This is a predicate that is true if its two arguments are identical S-expressions, and false if they are different. (The elementary predicate <code>EQ</code> is defined only for atomic arguments.) The definition of <code>EQUAL</code> is an example of a conditional expression inside a conditional expression.</p> +<p>NOTE: returns <code>F</code> on failure, not <code>NIL</code></p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L271">view source</a></div></div><div class="public anchor" id="var-ERROR"><h3>ERROR</h3><div class="usage"><code>(ERROR & args)</code></div><div class="doc"><div class="markdown"><p>Throw an error</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L414">view source</a></div></div><div class="public anchor" id="var-FIXP"><h3>FIXP</h3><div class="usage"><code>(FIXP x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L391">view source</a></div></div><div class="public anchor" id="var-GENSYM"><h3>GENSYM</h3><div class="usage"><code>(GENSYM)</code></div><div class="doc"><div class="markdown"><p>Generate a unique symbol.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L409">view source</a></div></div><div class="public anchor" id="var-GET"><h3>GET</h3><div class="usage"><code>(GET symbol indicator)</code></div><div class="doc"><div class="markdown"><p>From the manual:</p> +<p>‘<code>get</code> is somewhat like <code>prop</code>; however its value is car of the rest of the list if the <code>indicator</code> is found, and NIL otherwise.’</p> +<p>It’s clear that <code>GET</code> is expected to be defined in terms of <code>PROP</code>, but we can’t implement <code>PROP</code> here because we lack <code>EVAL</code>; and we can’t have <code>EVAL</code> here because both it and <code>APPLY</code> depends on <code>GET</code>.</p> +<p>OK, It’s worse than that: the statement of the definition of <code>GET</code> (and of) <code>PROP</code> on page 59 says that the first argument to each must be a list; But the in the definition of <code>ASSOC</code> on page 70, when <code>GET</code> is called its first argument is always an atom. Since it’s <code>ASSOC</code> and <code>EVAL</code> which I need to make work, I’m going to assume that page 59 is wrong.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L464">view source</a></div></div><div class="public anchor" id="var-GREATERP"><h3>GREATERP</h3><div class="usage"><code>(GREATERP x y)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L403">view source</a></div></div><div class="public anchor" id="var-lax.3F"><h3>lax?</h3><div class="usage"><code>(lax? symbol)</code></div><div class="doc"><div class="markdown"><p>Are we in lax mode? If so. return true; is not, throw an exception with this <code>symbol</code>.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L38">view source</a></div></div><div class="public anchor" id="var-LESSP"><h3>LESSP</h3><div class="usage"><code>(LESSP x y)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L399">view source</a></div></div><div class="public anchor" id="var-LIST"><h3>LIST</h3><div class="usage"><code>(LIST & args)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L232">view source</a></div></div><div class="public anchor" id="var-magic-marker"><h3>magic-marker</h3><div class="usage"></div><div class="doc"><div class="markdown"><p>The unexplained magic number which marks the start of a property list.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L436">view source</a></div></div><div class="public anchor" id="var-NILP"><h3>NILP</h3><h4 class="type">macro</h4><div class="usage"><code>(NILP x)</code></div><div class="doc"><div class="markdown"><p>Not part of LISP 1.5: <code>T</code> if <code>o</code> is <code>NIL</code>, else <code>NIL</code>.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L243">view source</a></div></div><div class="public anchor" id="var-NULL"><h3>NULL</h3><h4 class="type">macro</h4><div class="usage"><code>(NULL x)</code></div><div class="doc"><div class="markdown"><p>Returns <code>T</code> if and only if the argument <code>x</code> is bound to <code>NIL</code>; else <code>F</code>.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L238">view source</a></div></div><div class="public anchor" id="var-NUMBERP"><h3>NUMBERP</h3><div class="usage"><code>(NUMBERP x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L395">view source</a></div></div><div class="public anchor" id="var-OBLIST"><h3>OBLIST</h3><div class="usage"><code>(OBLIST)</code></div><div class="doc"><div class="markdown"><p>Return a list of the symbols currently bound on the object list.</p> +<p><strong>NOTE THAT</strong> in the Lisp 1.5 manual, footnote at the bottom of page 69, it implies that an argument can be passed but I’m not sure of the semantics of this.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L425">view source</a></div></div><div class="public anchor" id="var-OR"><h3>OR</h3><div class="usage"><code>(OR & args)</code></div><div class="doc"><div class="markdown"><p><code>T</code> if and only if at least one of my <code>args</code> evaluates to something other than either <code>F</code> or <code>NIL</code>, else <code>F</code>.</p> +<p>In <code>beowulf.host</code> principally because I don’t yet feel confident to define varargs functions in Lisp.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L295">view source</a></div></div><div class="public anchor" id="var-PAIRLIS"><h3>PAIRLIS</h3><div class="usage"><code>(PAIRLIS x y a)</code></div><div class="doc"><div class="markdown"><p>This function gives the list of pairs of corresponding elements of the lists <code>x</code> and <code>y</code>, and APPENDs this to the list <code>a</code>. The resultant list of pairs, which is like a table with two columns, is called an association list.</p> <p>Eessentially, it builds the environment on the stack, implementing shallow binding.</p> <p>All args are assumed to be <code>beowulf.cons-cell/ConsCell</code> objects. See page 12 of the Lisp 1.5 Programmers Manual.</p> -<p><strong>NOTE THAT</strong> this function is overridden by an implementation in Lisp, but is currently still present for bootstrapping.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L289">view source</a></div></div><div class="public anchor" id="var-PLUS"><h3>PLUS</h3><div class="usage"><code>(PLUS & args)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L317">view source</a></div></div><div class="public anchor" id="var-QUOTIENT"><h3>QUOTIENT</h3><div class="usage"><code>(QUOTIENT x y)</code></div><div class="doc"><div class="markdown"><p>I’m not certain from the documentation whether Lisp 1.5 <code>QUOTIENT</code> returned the integer part of the quotient, or a realnum representing the whole quotient. I am for now implementing the latter.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L332">view source</a></div></div><div class="public anchor" id="var-REMAINDER"><h3>REMAINDER</h3><div class="usage"><code>(REMAINDER x y)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L340">view source</a></div></div><div class="public anchor" id="var-RPLACA"><h3>RPLACA</h3><div class="usage"><code>(RPLACA cell value)</code></div><div class="doc"><div class="markdown"><p>Replace the CAR pointer of this <code>cell</code> with this <code>value</code>. Dangerous, should really not exist, but does in Lisp 1.5 (and was important for some performance hacks in early Lisps)</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L154">view source</a></div></div><div class="public anchor" id="var-RPLACD"><h3>RPLACD</h3><div class="usage"><code>(RPLACD cell value)</code></div><div class="doc"><div class="markdown"><p>Replace the CDR pointer of this <code>cell</code> with this <code>value</code>. Dangerous, should really not exist, but does in Lisp 1.5 (and was important for some performance hacks in early Lisps)</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L179">view source</a></div></div><div class="public anchor" id="var-SET"><h3>SET</h3><div class="usage"><code>(SET symbol val)</code></div><div class="doc"><div class="markdown"><p>Implementation of SET in Clojure. Add to the <code>oblist</code> a binding of the value of <code>var</code> to the value of <code>val</code>. NOTE WELL: this is not SETQ!</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L417">view source</a></div></div><div class="public anchor" id="var-SUB1"><h3>SUB1</h3><div class="usage"><code>(SUB1 x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L348">view source</a></div></div><div class="public anchor" id="var-TIMES"><h3>TIMES</h3><div class="usage"><code>(TIMES & args)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L322">view source</a></div></div><div class="public anchor" id="var-TRACE"><h3>TRACE</h3><div class="usage"><code>(TRACE s)</code></div><div class="doc"><div class="markdown"><p>Add this symbol <code>s</code> to the set of symbols currently being traced. If <code>s</code> is not a symbol, does nothing.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L442">view source</a></div></div><div class="public anchor" id="var-traced-symbols"><h3>traced-symbols</h3><div class="usage"></div><div class="doc"><div class="markdown"><p>Symbols currently being traced.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L432">view source</a></div></div><div class="public anchor" id="var-traced.3F"><h3>traced?</h3><div class="usage"><code>(traced? s)</code></div><div class="doc"><div class="markdown"><p>Return <code>true</code> iff <code>s</code> is a symbol currently being traced, else <code>nil</code>.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L436">view source</a></div></div><div class="public anchor" id="var-uaf"><h3>uaf</h3><div class="usage"><code>(uaf l path)</code></div><div class="doc"><div class="markdown"><p>Universal access function; <code>l</code> is expected to be an arbitrary LISP list, <code>path</code> a (clojure) list of the characters <code>a</code> and <code>d</code>. Intended to make declaring all those fiddly <code>#'c[ad]+r'</code> functions a bit easier</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L98">view source</a></div></div><div class="public anchor" id="var-UNTRACE"><h3>UNTRACE</h3><div class="usage"><code>(UNTRACE s)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L449">view source</a></div></div></div></body></html> \ No newline at end of file +<p><strong>NOTE THAT</strong> this function is overridden by an implementation in Lisp, but is currently still present for bootstrapping.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L328">view source</a></div></div><div class="public anchor" id="var-PLUS"><h3>PLUS</h3><div class="usage"><code>(PLUS & args)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L356">view source</a></div></div><div class="public anchor" id="var-PUT"><h3>PUT</h3><div class="usage"><code>(PUT symbol indicator value)</code></div><div class="doc"><div class="markdown"><p>Put this <code>value</code> as the value of the property indicated by this <code>indicator</code> of this <code>symbol</code>. Return <code>value</code> on success.</p> +<p>NOTE THAT there is no <code>PUT</code> defined in the manual, but it would have been easy to have defined it so I don’t think this fully counts as an extension.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L440">view source</a></div></div><div class="public anchor" id="var-QUOTIENT"><h3>QUOTIENT</h3><div class="usage"><code>(QUOTIENT x y)</code></div><div class="doc"><div class="markdown"><p>I’m not certain from the documentation whether Lisp 1.5 <code>QUOTIENT</code> returned the integer part of the quotient, or a realnum representing the whole quotient. I am for now implementing the latter.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L371">view source</a></div></div><div class="public anchor" id="var-REMAINDER"><h3>REMAINDER</h3><div class="usage"><code>(REMAINDER x y)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L379">view source</a></div></div><div class="public anchor" id="var-RPLACA"><h3>RPLACA</h3><div class="usage"><code>(RPLACA cell value)</code></div><div class="doc"><div class="markdown"><p>Replace the CAR pointer of this <code>cell</code> with this <code>value</code>. Dangerous, should really not exist, but does in Lisp 1.5 (and was important for some performance hacks in early Lisps)</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L152">view source</a></div></div><div class="public anchor" id="var-RPLACD"><h3>RPLACD</h3><div class="usage"><code>(RPLACD cell value)</code></div><div class="doc"><div class="markdown"><p>Replace the CDR pointer of this <code>cell</code> with this <code>value</code>. Dangerous, should really not exist, but does in Lisp 1.5 (and was important for some performance hacks in early Lisps)</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L192">view source</a></div></div><div class="public anchor" id="var-SET"><h3>SET</h3><div class="usage"><code>(SET symbol val)</code></div><div class="doc"><div class="markdown"><p>Implementation of SET in Clojure. Add to the <code>oblist</code> a binding of the value of <code>var</code> to the value of <code>val</code>. NOTE WELL: this is not SETQ!</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L512">view source</a></div></div><div class="public anchor" id="var-SUB1"><h3>SUB1</h3><div class="usage"><code>(SUB1 x)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L387">view source</a></div></div><div class="public anchor" id="var-TIMES"><h3>TIMES</h3><div class="usage"><code>(TIMES & args)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L361">view source</a></div></div><div class="public anchor" id="var-TRACE"><h3>TRACE</h3><div class="usage"><code>(TRACE s)</code></div><div class="doc"><div class="markdown"><p>Add this <code>s</code> to the set of symbols currently being traced. If <code>s</code> is not a symbol or sequence of symbols, does nothing.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L530">view source</a></div></div><div class="public anchor" id="var-traced-symbols"><h3>traced-symbols</h3><div class="usage"></div><div class="doc"><div class="markdown"><p>Symbols currently being traced.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L520">view source</a></div></div><div class="public anchor" id="var-traced.3F"><h3>traced?</h3><div class="usage"><code>(traced? s)</code></div><div class="doc"><div class="markdown"><p>Return <code>true</code> iff <code>s</code> is a symbol currently being traced, else <code>nil</code>.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L524">view source</a></div></div><div class="public anchor" id="var-uaf"><h3>uaf</h3><div class="usage"><code>(uaf l path)</code></div><div class="doc"><div class="markdown"><p>Universal access function; <code>l</code> is expected to be an arbitrary LISP list, <code>path</code> a (clojure) list of the characters <code>a</code> and <code>d</code>. Intended to make declaring all those fiddly <code>#'c[ad]+r'</code> functions a bit easier</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L96">view source</a></div></div><div class="public anchor" id="var-UNTRACE"><h3>UNTRACE</h3><div class="usage"><code>(UNTRACE s)</code></div><div class="doc"><div class="markdown"><p>Remove this <code>s</code> from the set of symbols currently being traced. If <code>s</code> is not a symbol or sequence of symbols, does nothing.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/host.clj#L540">view source</a></div></div></div></body></html> \ No newline at end of file diff --git a/docs/codox/beowulf.interop.html b/docs/codox/beowulf.interop.html new file mode 100644 index 0000000..4c2b46d --- /dev/null +++ b/docs/codox/beowulf.interop.html @@ -0,0 +1,11 @@ +<!DOCTYPE html PUBLIC "" + ""> +<html><head><meta charset="UTF-8" /><title>beowulf.interop documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Beowulf</span> <span class="project-version">0.3.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="further_reading.html"><div class="inner"><span>Further Reading</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>beowulf</span></div></a></li><li class="depth-1 "><a href="mexpr.html"><div class="inner"><span>Interpreting M-Expressions</span></div></a></li><li class="depth-1 "><a href="values.html"><div class="inner"><span>The properties of the system, and their values: here be dragons</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>beowulf</span></div></div></li><li class="depth-2 branch"><a href="beowulf.bootstrap.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bootstrap</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cons-cell</span></div></a></li><li class="depth-2 branch"><a href="beowulf.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2 branch"><a href="beowulf.gendoc.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>gendoc</span></div></a></li><li class="depth-2 branch"><a href="beowulf.host.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>host</span></div></a></li><li class="depth-2 branch current"><a href="beowulf.interop.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>interop</span></div></a></li><li class="depth-2 branch"><a href="beowulf.io.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>io</span></div></a></li><li class="depth-2 branch"><a href="beowulf.manual.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>manual</span></div></a></li><li class="depth-2 branch"><a href="beowulf.oblist.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>oblist</span></div></a></li><li class="depth-2 branch"><a href="beowulf.read.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>read</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>reader</span></div></div></li><li class="depth-3 branch"><a href="beowulf.reader.char-reader.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>char-reader</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.generate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>generate</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.macros.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>macros</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li><li class="depth-3"><a href="beowulf.reader.simplify.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simplify</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="beowulf.interop.html#var-INTEROP"><div class="inner"><span>INTEROP</span></div></a></li><li class="depth-1"><a href="beowulf.interop.html#var-interpret-qualified-name"><div class="inner"><span>interpret-qualified-name</span></div></a></li><li class="depth-1"><a href="beowulf.interop.html#var-listify-qualified-name"><div class="inner"><span>listify-qualified-name</span></div></a></li><li class="depth-1"><a href="beowulf.interop.html#var-to-beowulf"><div class="inner"><span>to-beowulf</span></div></a></li><li class="depth-1"><a href="beowulf.interop.html#var-to-clojure"><div class="inner"><span>to-clojure</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">beowulf.interop</h1><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="public anchor" id="var-INTEROP"><h3>INTEROP</h3><div class="usage"><code>(INTEROP fn-symbol args)</code></div><div class="doc"><div class="markdown"><p>Clojure (or other host environment) interoperation API. <code>fn-symbol</code> is expected to be either</p> +<ol> + <li>a symbol bound in the host environment to a function; or</li> + <li>a sequence (list) of symbols forming a qualified path name bound to a function.</li> +</ol> +<p>Lower case characters cannot normally be represented in Lisp 1.5, so both the upper case and lower case variants of <code>fn-symbol</code> will be tried. If the function you’re looking for has a mixed case name, that is not currently accessible.</p> +<p><code>args</code> is expected to be a Lisp 1.5 list of arguments to be passed to that function. Return value must be something acceptable to Lisp 1.5, so either a symbol, a number, or a Lisp 1.5 list.</p> +<p>If <code>fn-symbol</code> is not found (even when cast to lower case), or is not a function, or the value returned cannot be represented in Lisp 1.5, an exception is thrown with <code>:cause</code> bound to <code>:interop</code> and <code>:detail</code> set to a value representing the actual problem.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/interop.clj#L65">view source</a></div></div><div class="public anchor" id="var-interpret-qualified-name"><h3>interpret-qualified-name</h3><div class="usage"><code>(interpret-qualified-name l)</code></div><div class="doc"><div class="markdown"><p>For interoperation with Clojure, it will often be necessary to pass qualified names that are not representable in Lisp 1.5. This function takes a sequence in the form <code>(PART PART PART... NAME)</code> and returns a symbol in the form <code>part.part.part/NAME</code>. This symbol will then be tried in both that form and lower-cased. Names with hyphens or underscores cannot be represented with this scheme.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/interop.clj#L26">view source</a></div></div><div class="public anchor" id="var-listify-qualified-name"><h3>listify-qualified-name</h3><div class="usage"><code>(listify-qualified-name subr)</code></div><div class="doc"><div class="markdown"><p>We need to be able to print something we can link to the particular Clojure function <code>subr</code> in a form in which Lisp 1.5 is able to read it back in and relink it.</p> +<p>This assumes <code>subr</code> is either 1. a string in the format <code>#'beowulf.io/SYSIN</code> or <code>beowulf.io/SYSIN</code>; or 2. something which, when coerced to a string with <code>str</code>, will have such a format.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/interop.clj#L10">view source</a></div></div><div class="public anchor" id="var-to-beowulf"><h3>to-beowulf</h3><div class="usage"><code>(to-beowulf o)</code></div><div class="doc"><div class="markdown"><p>Return a beowulf-native representation of the Clojure object <code>o</code>. Numbers and symbols are unaffected. Collections have to be converted; strings must be converted to symbols.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/interop.clj#L43">view source</a></div></div><div class="public anchor" id="var-to-clojure"><h3>to-clojure</h3><div class="usage"><code>(to-clojure l)</code></div><div class="doc"><div class="markdown"><p>If l is a <code>beowulf.cons_cell.ConsCell</code>, return a Clojure list having the same members in the same order.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/interop.clj#L53">view source</a></div></div></div></body></html> \ No newline at end of file diff --git a/docs/codox/beowulf.io.html b/docs/codox/beowulf.io.html index 2d19239..7c4b31b 100644 --- a/docs/codox/beowulf.io.html +++ b/docs/codox/beowulf.io.html @@ -1,13 +1,13 @@ <!DOCTYPE html PUBLIC "" ""> -<html><head><meta charset="UTF-8" /><title>beowulf.io documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Beowulf</span> <span class="project-version">0.3.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="intro.html"><div class="inner"><span>beowulf</span></div></a></li><li class="depth-1 "><a href="mexpr.html"><div class="inner"><span>Interpreting M-Expressions</span></div></a></li><li class="depth-1 "><a href="values.html"><div class="inner"><span>Understanding values and properties</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>beowulf</span></div></div></li><li class="depth-2 branch"><a href="beowulf.bootstrap.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bootstrap</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cons-cell</span></div></a></li><li class="depth-2 branch"><a href="beowulf.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2 branch"><a href="beowulf.gendoc.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>gendoc</span></div></a></li><li class="depth-2 branch"><a href="beowulf.host.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>host</span></div></a></li><li class="depth-2 branch current"><a href="beowulf.io.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>io</span></div></a></li><li class="depth-2 branch"><a href="beowulf.manual.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>manual</span></div></a></li><li class="depth-2 branch"><a href="beowulf.oblist.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>oblist</span></div></a></li><li class="depth-2 branch"><a href="beowulf.read.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>read</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>reader</span></div></div></li><li class="depth-3 branch"><a href="beowulf.reader.char-reader.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>char-reader</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.generate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>generate</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.macros.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>macros</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li><li class="depth-3"><a href="beowulf.reader.simplify.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simplify</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="beowulf.io.html#var-default-sysout"><div class="inner"><span>default-sysout</span></div></a></li><li class="depth-1"><a href="beowulf.io.html#var-SYSIN"><div class="inner"><span>SYSIN</span></div></a></li><li class="depth-1"><a href="beowulf.io.html#var-SYSOUT"><div class="inner"><span>SYSOUT</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">beowulf.io</h1><div class="doc"><div class="markdown"><p>Non-standard extensions to Lisp 1.5 to read and write to the filesystem.</p> +<html><head><meta charset="UTF-8" /><title>beowulf.io documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Beowulf</span> <span class="project-version">0.3.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="further_reading.html"><div class="inner"><span>Further Reading</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>beowulf</span></div></a></li><li class="depth-1 "><a href="mexpr.html"><div class="inner"><span>Interpreting M-Expressions</span></div></a></li><li class="depth-1 "><a href="values.html"><div class="inner"><span>The properties of the system, and their values: here be dragons</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>beowulf</span></div></div></li><li class="depth-2 branch"><a href="beowulf.bootstrap.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bootstrap</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cons-cell</span></div></a></li><li class="depth-2 branch"><a href="beowulf.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2 branch"><a href="beowulf.gendoc.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>gendoc</span></div></a></li><li class="depth-2 branch"><a href="beowulf.host.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>host</span></div></a></li><li class="depth-2 branch"><a href="beowulf.interop.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>interop</span></div></a></li><li class="depth-2 branch current"><a href="beowulf.io.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>io</span></div></a></li><li class="depth-2 branch"><a href="beowulf.manual.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>manual</span></div></a></li><li class="depth-2 branch"><a href="beowulf.oblist.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>oblist</span></div></a></li><li class="depth-2 branch"><a href="beowulf.read.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>read</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>reader</span></div></div></li><li class="depth-3 branch"><a href="beowulf.reader.char-reader.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>char-reader</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.generate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>generate</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.macros.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>macros</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li><li class="depth-3"><a href="beowulf.reader.simplify.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simplify</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="beowulf.io.html#var-default-sysout"><div class="inner"><span>default-sysout</span></div></a></li><li class="depth-1"><a href="beowulf.io.html#var-safely-wrap-subr"><div class="inner"><span>safely-wrap-subr</span></div></a></li><li class="depth-1"><a href="beowulf.io.html#var-safely-wrap-subrs"><div class="inner"><span>safely-wrap-subrs</span></div></a></li><li class="depth-1"><a href="beowulf.io.html#var-SYSIN"><div class="inner"><span>SYSIN</span></div></a></li><li class="depth-1"><a href="beowulf.io.html#var-SYSOUT"><div class="inner"><span>SYSOUT</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">beowulf.io</h1><div class="doc"><div class="markdown"><p>Non-standard extensions to Lisp 1.5 to read and write to the filesystem.</p> <p>Lisp 1.5 had only <code>READ</code>, which read one S-Expression at a time, and various forms of <code>PRIN*</code> functions, which printed to the line printer. There was also <code>PUNCH</code>, which wrote to a card punch. It does not seem that there was any concept of an interactive terminal.</p> <p>See Appendix E, <code>OVERLORD - THE MONITOR</code>, and Appendix F, <code>LISP INPUT AND OUTPUT</code>.</p> <p>For our purposes, to save the current state of the Lisp system it should be sufficient to print the current contents of the oblist to file; and to restore a previous state from file, to overwrite the contents of the oblist with data from that file.</p> -<p>Hence functions SYSOUT and SYSIN, which do just that.</p></div></div><div class="public anchor" id="var-default-sysout"><h3>default-sysout</h3><div class="usage"></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/io.clj#L45">view source</a></div></div><div class="public anchor" id="var-SYSIN"><h3>SYSIN</h3><div class="usage"><code>(SYSIN)</code><code>(SYSIN filename)</code></div><div class="doc"><div class="markdown"><p>Read the contents of the file at this <code>filename</code> into the object list. </p> +<p>Hence functions SYSOUT and SYSIN, which do just that.</p></div></div><div class="public anchor" id="var-default-sysout"><h3>default-sysout</h3><div class="usage"></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/io.clj#L49">view source</a></div></div><div class="public anchor" id="var-safely-wrap-subr"><h3>safely-wrap-subr</h3><div class="usage"><code>(safely-wrap-subr entry)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/io.clj#L69">view source</a></div></div><div class="public anchor" id="var-safely-wrap-subrs"><h3>safely-wrap-subrs</h3><div class="usage"><code>(safely-wrap-subrs objects)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/io.clj#L80">view source</a></div></div><div class="public anchor" id="var-SYSIN"><h3>SYSIN</h3><div class="usage"><code>(SYSIN)</code><code>(SYSIN filename)</code></div><div class="doc"><div class="markdown"><p>Read the contents of the file at this <code>filename</code> into the object list. </p> <p>If the file is not a valid Beowulf sysout file, this will probably corrupt the system, you have been warned. File paths will be considered relative to the filepath set when starting Lisp.</p> <p>It is intended that sysout files can be read both from resources within the jar file, and from the file system. If a named file exists in both the file system and the resources, the file system will be preferred.</p> <p><strong>NOTE THAT</strong> if the provided <code>filename</code> does not end with <code>.lsp</code> (which, if you’re writing it from the Lisp REPL, it won’t), the extension <code>.lsp</code> will be appended.</p> -<p><strong>NOTE THAT</strong> this is an extension function, not available in strct mode.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/io.clj#L84">view source</a></div></div><div class="public anchor" id="var-SYSOUT"><h3>SYSOUT</h3><div class="usage"><code>(SYSOUT)</code><code>(SYSOUT filepath)</code></div><div class="doc"><div class="markdown"><p>Dump the current content of the object list to file. If no <code>filepath</code> is specified, a file name will be constructed of the symbol <code>Sysout</code> and the current date. File paths will be considered relative to the filepath set when starting Lisp.</p> -<p><strong>NOTE THAT</strong> this is an extension function, not available in strct mode.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/io.clj#L62">view source</a></div></div></div></body></html> \ No newline at end of file +<p><strong>NOTE THAT</strong> this is an extension function, not available in strct mode.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/io.clj#L137">view source</a></div></div><div class="public anchor" id="var-SYSOUT"><h3>SYSOUT</h3><div class="usage"><code>(SYSOUT)</code><code>(SYSOUT filepath)</code></div><div class="doc"><div class="markdown"><p>Dump the current content of the object list to file. If no <code>filepath</code> is specified, a file name will be constructed of the symbol <code>Sysout</code> and the current date. File paths will be considered relative to the filepath set when starting Lisp.</p> +<p><strong>NOTE THAT</strong> this is an extension function, not available in strct mode.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/io.clj#L84">view source</a></div></div></div></body></html> \ No newline at end of file diff --git a/docs/codox/beowulf.manual.html b/docs/codox/beowulf.manual.html index bf60737..a448a5e 100644 --- a/docs/codox/beowulf.manual.html +++ b/docs/codox/beowulf.manual.html @@ -1,3 +1,3 @@ <!DOCTYPE html PUBLIC "" ""> -<html><head><meta charset="UTF-8" /><title>beowulf.manual documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Beowulf</span> <span class="project-version">0.3.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="intro.html"><div class="inner"><span>beowulf</span></div></a></li><li class="depth-1 "><a href="mexpr.html"><div class="inner"><span>Interpreting M-Expressions</span></div></a></li><li class="depth-1 "><a href="values.html"><div class="inner"><span>Understanding values and properties</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>beowulf</span></div></div></li><li class="depth-2 branch"><a href="beowulf.bootstrap.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bootstrap</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cons-cell</span></div></a></li><li class="depth-2 branch"><a href="beowulf.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2 branch"><a href="beowulf.gendoc.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>gendoc</span></div></a></li><li class="depth-2 branch"><a href="beowulf.host.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>host</span></div></a></li><li class="depth-2 branch"><a href="beowulf.io.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>io</span></div></a></li><li class="depth-2 branch current"><a href="beowulf.manual.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>manual</span></div></a></li><li class="depth-2 branch"><a href="beowulf.oblist.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>oblist</span></div></a></li><li class="depth-2 branch"><a href="beowulf.read.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>read</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>reader</span></div></div></li><li class="depth-3 branch"><a href="beowulf.reader.char-reader.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>char-reader</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.generate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>generate</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.macros.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>macros</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li><li class="depth-3"><a href="beowulf.reader.simplify.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simplify</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="beowulf.manual.html#var-*manual-url*"><div class="inner"><span>*manual-url*</span></div></a></li><li class="depth-1"><a href="beowulf.manual.html#var-format-page-references"><div class="inner"><span>format-page-references</span></div></a></li><li class="depth-1"><a href="beowulf.manual.html#var-index"><div class="inner"><span>index</span></div></a></li><li class="depth-1"><a href="beowulf.manual.html#var-page-url"><div class="inner"><span>page-url</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">beowulf.manual</h1><div class="doc"><div class="markdown"><p>Experimental code for accessing the manual online.</p></div></div><div class="public anchor" id="var-*manual-url*"><h3>*manual-url*</h3><h4 class="dynamic">dynamic</h4><div class="usage"></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/manual.clj#L5">view source</a></div></div><div class="public anchor" id="var-format-page-references"><h3>format-page-references</h3><div class="usage"><code>(format-page-references fn-symbol)</code></div><div class="doc"><div class="markdown"><p>Format page references from the manual index for the function whose name is <code>fn-symbol</code>.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/manual.clj#L757">view source</a></div></div><div class="public anchor" id="var-index"><h3>index</h3><div class="usage"></div><div class="doc"><div class="markdown"><p>This is data extracted from the index pages of <code>Lisp 1.5 Programmer's Manual</code>. It’s here in the hope that we can automatically link to an online PDF link to the manual when the user invokes a function probably called <code>DOC</code> or <code>HELP</code>.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/manual.clj#L8">view source</a></div></div><div class="public anchor" id="var-page-url"><h3>page-url</h3><div class="usage"><code>(page-url page-no)</code></div><div class="doc"><div class="markdown"><p>Format the URL for the page in the manual with this <code>page-no</code>.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/manual.clj#L743">view source</a></div></div></div></body></html> \ No newline at end of file +<html><head><meta charset="UTF-8" /><title>beowulf.manual documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Beowulf</span> <span class="project-version">0.3.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="further_reading.html"><div class="inner"><span>Further Reading</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>beowulf</span></div></a></li><li class="depth-1 "><a href="mexpr.html"><div class="inner"><span>Interpreting M-Expressions</span></div></a></li><li class="depth-1 "><a href="values.html"><div class="inner"><span>The properties of the system, and their values: here be dragons</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>beowulf</span></div></div></li><li class="depth-2 branch"><a href="beowulf.bootstrap.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bootstrap</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cons-cell</span></div></a></li><li class="depth-2 branch"><a href="beowulf.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2 branch"><a href="beowulf.gendoc.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>gendoc</span></div></a></li><li class="depth-2 branch"><a href="beowulf.host.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>host</span></div></a></li><li class="depth-2 branch"><a href="beowulf.interop.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>interop</span></div></a></li><li class="depth-2 branch"><a href="beowulf.io.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>io</span></div></a></li><li class="depth-2 branch current"><a href="beowulf.manual.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>manual</span></div></a></li><li class="depth-2 branch"><a href="beowulf.oblist.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>oblist</span></div></a></li><li class="depth-2 branch"><a href="beowulf.read.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>read</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>reader</span></div></div></li><li class="depth-3 branch"><a href="beowulf.reader.char-reader.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>char-reader</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.generate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>generate</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.macros.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>macros</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li><li class="depth-3"><a href="beowulf.reader.simplify.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simplify</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="beowulf.manual.html#var-*manual-url*"><div class="inner"><span>*manual-url*</span></div></a></li><li class="depth-1"><a href="beowulf.manual.html#var-format-page-references"><div class="inner"><span>format-page-references</span></div></a></li><li class="depth-1"><a href="beowulf.manual.html#var-index"><div class="inner"><span>index</span></div></a></li><li class="depth-1"><a href="beowulf.manual.html#var-page-url"><div class="inner"><span>page-url</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">beowulf.manual</h1><div class="doc"><div class="markdown"><p>Experimental code for accessing the manual online.</p></div></div><div class="public anchor" id="var-*manual-url*"><h3>*manual-url*</h3><h4 class="dynamic">dynamic</h4><div class="usage"></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/manual.clj#L5">view source</a></div></div><div class="public anchor" id="var-format-page-references"><h3>format-page-references</h3><div class="usage"><code>(format-page-references fn-symbol)</code></div><div class="doc"><div class="markdown"><p>Format page references from the manual index for the function whose name is <code>fn-symbol</code>.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/manual.clj#L757">view source</a></div></div><div class="public anchor" id="var-index"><h3>index</h3><div class="usage"></div><div class="doc"><div class="markdown"><p>This is data extracted from the index pages of <code>Lisp 1.5 Programmer's Manual</code>. It’s here in the hope that we can automatically link to an online PDF link to the manual when the user invokes a function probably called <code>DOC</code> or <code>HELP</code>.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/manual.clj#L8">view source</a></div></div><div class="public anchor" id="var-page-url"><h3>page-url</h3><div class="usage"><code>(page-url page-no)</code></div><div class="doc"><div class="markdown"><p>Format the URL for the page in the manual with this <code>page-no</code>.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/manual.clj#L743">view source</a></div></div></div></body></html> \ No newline at end of file diff --git a/docs/codox/beowulf.oblist.html b/docs/codox/beowulf.oblist.html index 241acff..52a1a93 100644 --- a/docs/codox/beowulf.oblist.html +++ b/docs/codox/beowulf.oblist.html @@ -1,5 +1,5 @@ <!DOCTYPE html PUBLIC "" ""> -<html><head><meta charset="UTF-8" /><title>beowulf.oblist documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Beowulf</span> <span class="project-version">0.3.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="intro.html"><div class="inner"><span>beowulf</span></div></a></li><li class="depth-1 "><a href="mexpr.html"><div class="inner"><span>Interpreting M-Expressions</span></div></a></li><li class="depth-1 "><a href="values.html"><div class="inner"><span>Understanding values and properties</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>beowulf</span></div></div></li><li class="depth-2 branch"><a href="beowulf.bootstrap.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bootstrap</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cons-cell</span></div></a></li><li class="depth-2 branch"><a href="beowulf.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2 branch"><a href="beowulf.gendoc.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>gendoc</span></div></a></li><li class="depth-2 branch"><a href="beowulf.host.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>host</span></div></a></li><li class="depth-2 branch"><a href="beowulf.io.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>io</span></div></a></li><li class="depth-2 branch"><a href="beowulf.manual.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>manual</span></div></a></li><li class="depth-2 branch current"><a href="beowulf.oblist.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>oblist</span></div></a></li><li class="depth-2 branch"><a href="beowulf.read.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>read</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>reader</span></div></div></li><li class="depth-3 branch"><a href="beowulf.reader.char-reader.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>char-reader</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.generate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>generate</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.macros.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>macros</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li><li class="depth-3"><a href="beowulf.reader.simplify.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simplify</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="beowulf.oblist.html#var-*options*"><div class="inner"><span>*options*</span></div></a></li><li class="depth-1"><a href="beowulf.oblist.html#var-NIL"><div class="inner"><span>NIL</span></div></a></li><li class="depth-1"><a href="beowulf.oblist.html#var-oblist"><div class="inner"><span>oblist</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">beowulf.oblist</h1><div class="doc"><div class="markdown"><p>A namespace mainly devoted to the object list and other top level global variables.</p> +<html><head><meta charset="UTF-8" /><title>beowulf.oblist documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Beowulf</span> <span class="project-version">0.3.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="further_reading.html"><div class="inner"><span>Further Reading</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>beowulf</span></div></a></li><li class="depth-1 "><a href="mexpr.html"><div class="inner"><span>Interpreting M-Expressions</span></div></a></li><li class="depth-1 "><a href="values.html"><div class="inner"><span>The properties of the system, and their values: here be dragons</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>beowulf</span></div></div></li><li class="depth-2 branch"><a href="beowulf.bootstrap.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bootstrap</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cons-cell</span></div></a></li><li class="depth-2 branch"><a href="beowulf.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2 branch"><a href="beowulf.gendoc.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>gendoc</span></div></a></li><li class="depth-2 branch"><a href="beowulf.host.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>host</span></div></a></li><li class="depth-2 branch"><a href="beowulf.interop.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>interop</span></div></a></li><li class="depth-2 branch"><a href="beowulf.io.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>io</span></div></a></li><li class="depth-2 branch"><a href="beowulf.manual.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>manual</span></div></a></li><li class="depth-2 branch current"><a href="beowulf.oblist.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>oblist</span></div></a></li><li class="depth-2 branch"><a href="beowulf.read.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>read</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>reader</span></div></div></li><li class="depth-3 branch"><a href="beowulf.reader.char-reader.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>char-reader</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.generate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>generate</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.macros.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>macros</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li><li class="depth-3"><a href="beowulf.reader.simplify.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simplify</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="beowulf.oblist.html#var-*options*"><div class="inner"><span>*options*</span></div></a></li><li class="depth-1"><a href="beowulf.oblist.html#var-NIL"><div class="inner"><span>NIL</span></div></a></li><li class="depth-1"><a href="beowulf.oblist.html#var-oblist"><div class="inner"><span>oblist</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">beowulf.oblist</h1><div class="doc"><div class="markdown"><p>A namespace mainly devoted to the object list and other top level global variables.</p> <p>Yes, this makes little sense, but if you put them anywhere else you end up in cyclic dependency hell.</p></div></div><div class="public anchor" id="var-*options*"><h3>*options*</h3><h4 class="dynamic">dynamic</h4><div class="usage"></div><div class="doc"><div class="markdown"><p>Command line options from invocation.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/oblist.clj#L42">view source</a></div></div><div class="public anchor" id="var-NIL"><h3>NIL</h3><div class="usage"></div><div class="doc"><div class="markdown"><p>The canonical empty list symbol.</p> <p>TODO: this doesn’t really work, because (from Clojure) <code>(empty? NIL)</code> throws an exception. It might be better to subclass beowulf.cons_cell.ConsCell to create a new singleton class Nil which overrides the <code>empty</code> method of IPersistentCollection?</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/oblist.clj#L29">view source</a></div></div><div class="public anchor" id="var-oblist"><h3>oblist</h3><div class="usage"></div><div class="doc"><div class="markdown"><p>The default environment.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/oblist.clj#L38">view source</a></div></div></div></body></html> \ No newline at end of file diff --git a/docs/codox/beowulf.read.html b/docs/codox/beowulf.read.html index 115d614..31bb373 100644 --- a/docs/codox/beowulf.read.html +++ b/docs/codox/beowulf.read.html @@ -1,6 +1,6 @@ <!DOCTYPE html PUBLIC "" ""> -<html><head><meta charset="UTF-8" /><title>beowulf.read documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Beowulf</span> <span class="project-version">0.3.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="intro.html"><div class="inner"><span>beowulf</span></div></a></li><li class="depth-1 "><a href="mexpr.html"><div class="inner"><span>Interpreting M-Expressions</span></div></a></li><li class="depth-1 "><a href="values.html"><div class="inner"><span>Understanding values and properties</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>beowulf</span></div></div></li><li class="depth-2 branch"><a href="beowulf.bootstrap.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bootstrap</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cons-cell</span></div></a></li><li class="depth-2 branch"><a href="beowulf.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2 branch"><a href="beowulf.gendoc.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>gendoc</span></div></a></li><li class="depth-2 branch"><a href="beowulf.host.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>host</span></div></a></li><li class="depth-2 branch"><a href="beowulf.io.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>io</span></div></a></li><li class="depth-2 branch"><a href="beowulf.manual.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>manual</span></div></a></li><li class="depth-2 branch"><a href="beowulf.oblist.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>oblist</span></div></a></li><li class="depth-2 branch current"><a href="beowulf.read.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>read</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>reader</span></div></div></li><li class="depth-3 branch"><a href="beowulf.reader.char-reader.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>char-reader</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.generate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>generate</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.macros.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>macros</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li><li class="depth-3"><a href="beowulf.reader.simplify.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simplify</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="beowulf.read.html#var-gsp"><div class="inner"><span>gsp</span></div></a></li><li class="depth-1"><a href="beowulf.read.html#var-number-lines"><div class="inner"><span>number-lines</span></div></a></li><li class="depth-1"><a href="beowulf.read.html#var-READ"><div class="inner"><span>READ</span></div></a></li><li class="depth-1"><a href="beowulf.read.html#var-read-from-console"><div class="inner"><span>read-from-console</span></div></a></li><li class="depth-1"><a href="beowulf.read.html#var-strip-line-comments"><div class="inner"><span>strip-line-comments</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">beowulf.read</h1><div class="doc"><div class="markdown"><p>This provides the reader required for boostrapping. It’s not a bad reader - it provides feedback on errors found in the input - but it isn’t the real Lisp reader.</p> +<html><head><meta charset="UTF-8" /><title>beowulf.read documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Beowulf</span> <span class="project-version">0.3.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="further_reading.html"><div class="inner"><span>Further Reading</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>beowulf</span></div></a></li><li class="depth-1 "><a href="mexpr.html"><div class="inner"><span>Interpreting M-Expressions</span></div></a></li><li class="depth-1 "><a href="values.html"><div class="inner"><span>The properties of the system, and their values: here be dragons</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>beowulf</span></div></div></li><li class="depth-2 branch"><a href="beowulf.bootstrap.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bootstrap</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cons-cell</span></div></a></li><li class="depth-2 branch"><a href="beowulf.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2 branch"><a href="beowulf.gendoc.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>gendoc</span></div></a></li><li class="depth-2 branch"><a href="beowulf.host.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>host</span></div></a></li><li class="depth-2 branch"><a href="beowulf.interop.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>interop</span></div></a></li><li class="depth-2 branch"><a href="beowulf.io.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>io</span></div></a></li><li class="depth-2 branch"><a href="beowulf.manual.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>manual</span></div></a></li><li class="depth-2 branch"><a href="beowulf.oblist.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>oblist</span></div></a></li><li class="depth-2 branch current"><a href="beowulf.read.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>read</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>reader</span></div></div></li><li class="depth-3 branch"><a href="beowulf.reader.char-reader.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>char-reader</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.generate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>generate</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.macros.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>macros</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li><li class="depth-3"><a href="beowulf.reader.simplify.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simplify</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="beowulf.read.html#var-gsp"><div class="inner"><span>gsp</span></div></a></li><li class="depth-1"><a href="beowulf.read.html#var-number-lines"><div class="inner"><span>number-lines</span></div></a></li><li class="depth-1"><a href="beowulf.read.html#var-READ"><div class="inner"><span>READ</span></div></a></li><li class="depth-1"><a href="beowulf.read.html#var-read-from-console"><div class="inner"><span>read-from-console</span></div></a></li><li class="depth-1"><a href="beowulf.read.html#var-strip-line-comments"><div class="inner"><span>strip-line-comments</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">beowulf.read</h1><div class="doc"><div class="markdown"><p>This provides the reader required for boostrapping. It’s not a bad reader - it provides feedback on errors found in the input - but it isn’t the real Lisp reader.</p> <p>Intended deviations from the behaviour of the real Lisp reader are as follows:</p> <ol> <li>It reads the meta-expression language <code>MEXPR</code> in addition to the symbolic expression language <code>SEXPR</code>, which I do not believe the Lisp 1.5 reader ever did;</li> diff --git a/docs/codox/beowulf.reader.char-reader.html b/docs/codox/beowulf.reader.char-reader.html index 8699ea3..414801c 100644 --- a/docs/codox/beowulf.reader.char-reader.html +++ b/docs/codox/beowulf.reader.char-reader.html @@ -1,6 +1,6 @@ <!DOCTYPE html PUBLIC "" ""> -<html><head><meta charset="UTF-8" /><title>beowulf.reader.char-reader documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Beowulf</span> <span class="project-version">0.3.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="intro.html"><div class="inner"><span>beowulf</span></div></a></li><li class="depth-1 "><a href="mexpr.html"><div class="inner"><span>Interpreting M-Expressions</span></div></a></li><li class="depth-1 "><a href="values.html"><div class="inner"><span>Understanding values and properties</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>beowulf</span></div></div></li><li class="depth-2 branch"><a href="beowulf.bootstrap.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bootstrap</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cons-cell</span></div></a></li><li class="depth-2 branch"><a href="beowulf.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2 branch"><a href="beowulf.gendoc.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>gendoc</span></div></a></li><li class="depth-2 branch"><a href="beowulf.host.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>host</span></div></a></li><li class="depth-2 branch"><a href="beowulf.io.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>io</span></div></a></li><li class="depth-2 branch"><a href="beowulf.manual.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>manual</span></div></a></li><li class="depth-2 branch"><a href="beowulf.oblist.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>oblist</span></div></a></li><li class="depth-2 branch"><a href="beowulf.read.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>read</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>reader</span></div></div></li><li class="depth-3 branch current"><a href="beowulf.reader.char-reader.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>char-reader</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.generate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>generate</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.macros.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>macros</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li><li class="depth-3"><a href="beowulf.reader.simplify.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simplify</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="beowulf.reader.char-reader.html#var-get-reader"><div class="inner"><span>get-reader</span></div></a></li><li class="depth-1"><a href="beowulf.reader.char-reader.html#var-read-chars"><div class="inner"><span>read-chars</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">beowulf.reader.char-reader</h1><div class="doc"><div class="markdown"><p>Provide sensible line editing, auto completion, and history recall.</p> +<html><head><meta charset="UTF-8" /><title>beowulf.reader.char-reader documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Beowulf</span> <span class="project-version">0.3.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="further_reading.html"><div class="inner"><span>Further Reading</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>beowulf</span></div></a></li><li class="depth-1 "><a href="mexpr.html"><div class="inner"><span>Interpreting M-Expressions</span></div></a></li><li class="depth-1 "><a href="values.html"><div class="inner"><span>The properties of the system, and their values: here be dragons</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>beowulf</span></div></div></li><li class="depth-2 branch"><a href="beowulf.bootstrap.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bootstrap</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cons-cell</span></div></a></li><li class="depth-2 branch"><a href="beowulf.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2 branch"><a href="beowulf.gendoc.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>gendoc</span></div></a></li><li class="depth-2 branch"><a href="beowulf.host.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>host</span></div></a></li><li class="depth-2 branch"><a href="beowulf.interop.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>interop</span></div></a></li><li class="depth-2 branch"><a href="beowulf.io.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>io</span></div></a></li><li class="depth-2 branch"><a href="beowulf.manual.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>manual</span></div></a></li><li class="depth-2 branch"><a href="beowulf.oblist.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>oblist</span></div></a></li><li class="depth-2 branch"><a href="beowulf.read.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>read</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>reader</span></div></div></li><li class="depth-3 branch current"><a href="beowulf.reader.char-reader.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>char-reader</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.generate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>generate</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.macros.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>macros</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li><li class="depth-3"><a href="beowulf.reader.simplify.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simplify</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="beowulf.reader.char-reader.html#var-get-reader"><div class="inner"><span>get-reader</span></div></a></li><li class="depth-1"><a href="beowulf.reader.char-reader.html#var-read-chars"><div class="inner"><span>read-chars</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">beowulf.reader.char-reader</h1><div class="doc"><div class="markdown"><p>Provide sensible line editing, auto completion, and history recall.</p> <p>None of what’s needed here is really working yet, and a pull request with a working implementation would be greatly welcomed.</p> <h2><a href="#whats-needed-rough-specification-" name="whats-needed-rough-specification-"></a>What’s needed (rough specification)</h2> <ol> diff --git a/docs/codox/beowulf.reader.generate.html b/docs/codox/beowulf.reader.generate.html index 574e61e..16f25fa 100644 --- a/docs/codox/beowulf.reader.generate.html +++ b/docs/codox/beowulf.reader.generate.html @@ -1,6 +1,6 @@ <!DOCTYPE html PUBLIC "" ""> -<html><head><meta charset="UTF-8" /><title>beowulf.reader.generate documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Beowulf</span> <span class="project-version">0.3.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="intro.html"><div class="inner"><span>beowulf</span></div></a></li><li class="depth-1 "><a href="mexpr.html"><div class="inner"><span>Interpreting M-Expressions</span></div></a></li><li class="depth-1 "><a href="values.html"><div class="inner"><span>Understanding values and properties</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>beowulf</span></div></div></li><li class="depth-2 branch"><a href="beowulf.bootstrap.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bootstrap</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cons-cell</span></div></a></li><li class="depth-2 branch"><a href="beowulf.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2 branch"><a href="beowulf.gendoc.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>gendoc</span></div></a></li><li class="depth-2 branch"><a href="beowulf.host.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>host</span></div></a></li><li class="depth-2 branch"><a href="beowulf.io.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>io</span></div></a></li><li class="depth-2 branch"><a href="beowulf.manual.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>manual</span></div></a></li><li class="depth-2 branch"><a href="beowulf.oblist.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>oblist</span></div></a></li><li class="depth-2 branch"><a href="beowulf.read.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>read</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>reader</span></div></div></li><li class="depth-3 branch"><a href="beowulf.reader.char-reader.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>char-reader</span></div></a></li><li class="depth-3 branch current"><a href="beowulf.reader.generate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>generate</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.macros.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>macros</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li><li class="depth-3"><a href="beowulf.reader.simplify.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simplify</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="beowulf.reader.generate.html#var-gen-cond"><div class="inner"><span>gen-cond</span></div></a></li><li class="depth-1"><a href="beowulf.reader.generate.html#var-gen-cond-clause"><div class="inner"><span>gen-cond-clause</span></div></a></li><li class="depth-1"><a href="beowulf.reader.generate.html#var-gen-dot-terminated-list"><div class="inner"><span>gen-dot-terminated-list</span></div></a></li><li class="depth-1"><a href="beowulf.reader.generate.html#var-gen-fn-call"><div class="inner"><span>gen-fn-call</span></div></a></li><li class="depth-1"><a href="beowulf.reader.generate.html#var-gen-iexpr"><div class="inner"><span>gen-iexpr</span></div></a></li><li class="depth-1"><a href="beowulf.reader.generate.html#var-generate"><div class="inner"><span>generate</span></div></a></li><li class="depth-1"><a href="beowulf.reader.generate.html#var-generate-assign"><div class="inner"><span>generate-assign</span></div></a></li><li class="depth-1"><a href="beowulf.reader.generate.html#var-generate-defn"><div class="inner"><span>generate-defn</span></div></a></li><li class="depth-1"><a href="beowulf.reader.generate.html#var-generate-set"><div class="inner"><span>generate-set</span></div></a></li><li class="depth-1"><a href="beowulf.reader.generate.html#var-strip-leading-zeros"><div class="inner"><span>strip-leading-zeros</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">beowulf.reader.generate</h1><div class="doc"><div class="markdown"><p>Generating S-Expressions from parse trees. </p> +<html><head><meta charset="UTF-8" /><title>beowulf.reader.generate documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Beowulf</span> <span class="project-version">0.3.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="further_reading.html"><div class="inner"><span>Further Reading</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>beowulf</span></div></a></li><li class="depth-1 "><a href="mexpr.html"><div class="inner"><span>Interpreting M-Expressions</span></div></a></li><li class="depth-1 "><a href="values.html"><div class="inner"><span>The properties of the system, and their values: here be dragons</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>beowulf</span></div></div></li><li class="depth-2 branch"><a href="beowulf.bootstrap.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bootstrap</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cons-cell</span></div></a></li><li class="depth-2 branch"><a href="beowulf.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2 branch"><a href="beowulf.gendoc.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>gendoc</span></div></a></li><li class="depth-2 branch"><a href="beowulf.host.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>host</span></div></a></li><li class="depth-2 branch"><a href="beowulf.interop.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>interop</span></div></a></li><li class="depth-2 branch"><a href="beowulf.io.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>io</span></div></a></li><li class="depth-2 branch"><a href="beowulf.manual.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>manual</span></div></a></li><li class="depth-2 branch"><a href="beowulf.oblist.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>oblist</span></div></a></li><li class="depth-2 branch"><a href="beowulf.read.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>read</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>reader</span></div></div></li><li class="depth-3 branch"><a href="beowulf.reader.char-reader.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>char-reader</span></div></a></li><li class="depth-3 branch current"><a href="beowulf.reader.generate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>generate</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.macros.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>macros</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li><li class="depth-3"><a href="beowulf.reader.simplify.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simplify</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="beowulf.reader.generate.html#var-gen-cond"><div class="inner"><span>gen-cond</span></div></a></li><li class="depth-1"><a href="beowulf.reader.generate.html#var-gen-cond-clause"><div class="inner"><span>gen-cond-clause</span></div></a></li><li class="depth-1"><a href="beowulf.reader.generate.html#var-gen-dot-terminated-list"><div class="inner"><span>gen-dot-terminated-list</span></div></a></li><li class="depth-1"><a href="beowulf.reader.generate.html#var-gen-fn-call"><div class="inner"><span>gen-fn-call</span></div></a></li><li class="depth-1"><a href="beowulf.reader.generate.html#var-gen-iexpr"><div class="inner"><span>gen-iexpr</span></div></a></li><li class="depth-1"><a href="beowulf.reader.generate.html#var-generate"><div class="inner"><span>generate</span></div></a></li><li class="depth-1"><a href="beowulf.reader.generate.html#var-generate-assign"><div class="inner"><span>generate-assign</span></div></a></li><li class="depth-1"><a href="beowulf.reader.generate.html#var-generate-defn"><div class="inner"><span>generate-defn</span></div></a></li><li class="depth-1"><a href="beowulf.reader.generate.html#var-generate-set"><div class="inner"><span>generate-set</span></div></a></li><li class="depth-1"><a href="beowulf.reader.generate.html#var-strip-leading-zeros"><div class="inner"><span>strip-leading-zeros</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">beowulf.reader.generate</h1><div class="doc"><div class="markdown"><p>Generating S-Expressions from parse trees. </p> <h2><a href="#from-lisp-1-5-programmers-manual-page-10" name="from-lisp-1-5-programmers-manual-page-10"></a>From Lisp 1.5 Programmers Manual, page 10</h2> <p><em>Note that I’ve retyped much of this, since copy/pasting out of PDF is less than reliable. Any typos are mine.</em></p> <p><em>Quote starts:</em></p> diff --git a/docs/codox/beowulf.reader.macros.html b/docs/codox/beowulf.reader.macros.html index 510db75..e5e5e4f 100644 --- a/docs/codox/beowulf.reader.macros.html +++ b/docs/codox/beowulf.reader.macros.html @@ -1,5 +1,5 @@ <!DOCTYPE html PUBLIC "" ""> -<html><head><meta charset="UTF-8" /><title>beowulf.reader.macros documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Beowulf</span> <span class="project-version">0.3.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="intro.html"><div class="inner"><span>beowulf</span></div></a></li><li class="depth-1 "><a href="mexpr.html"><div class="inner"><span>Interpreting M-Expressions</span></div></a></li><li class="depth-1 "><a href="values.html"><div class="inner"><span>Understanding values and properties</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>beowulf</span></div></div></li><li class="depth-2 branch"><a href="beowulf.bootstrap.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bootstrap</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cons-cell</span></div></a></li><li class="depth-2 branch"><a href="beowulf.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2 branch"><a href="beowulf.gendoc.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>gendoc</span></div></a></li><li class="depth-2 branch"><a href="beowulf.host.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>host</span></div></a></li><li class="depth-2 branch"><a href="beowulf.io.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>io</span></div></a></li><li class="depth-2 branch"><a href="beowulf.manual.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>manual</span></div></a></li><li class="depth-2 branch"><a href="beowulf.oblist.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>oblist</span></div></a></li><li class="depth-2 branch"><a href="beowulf.read.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>read</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>reader</span></div></div></li><li class="depth-3 branch"><a href="beowulf.reader.char-reader.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>char-reader</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.generate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>generate</span></div></a></li><li class="depth-3 branch current"><a href="beowulf.reader.macros.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>macros</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li><li class="depth-3"><a href="beowulf.reader.simplify.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simplify</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="beowulf.reader.macros.html#var-*readmacros*"><div class="inner"><span>*readmacros*</span></div></a></li><li class="depth-1"><a href="beowulf.reader.macros.html#var-expand-macros"><div class="inner"><span>expand-macros</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">beowulf.reader.macros</h1><div class="doc"><div class="markdown"><p>Can I implement reader macros? let’s see!</p> +<html><head><meta charset="UTF-8" /><title>beowulf.reader.macros documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Beowulf</span> <span class="project-version">0.3.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="further_reading.html"><div class="inner"><span>Further Reading</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>beowulf</span></div></a></li><li class="depth-1 "><a href="mexpr.html"><div class="inner"><span>Interpreting M-Expressions</span></div></a></li><li class="depth-1 "><a href="values.html"><div class="inner"><span>The properties of the system, and their values: here be dragons</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>beowulf</span></div></div></li><li class="depth-2 branch"><a href="beowulf.bootstrap.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bootstrap</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cons-cell</span></div></a></li><li class="depth-2 branch"><a href="beowulf.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2 branch"><a href="beowulf.gendoc.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>gendoc</span></div></a></li><li class="depth-2 branch"><a href="beowulf.host.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>host</span></div></a></li><li class="depth-2 branch"><a href="beowulf.interop.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>interop</span></div></a></li><li class="depth-2 branch"><a href="beowulf.io.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>io</span></div></a></li><li class="depth-2 branch"><a href="beowulf.manual.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>manual</span></div></a></li><li class="depth-2 branch"><a href="beowulf.oblist.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>oblist</span></div></a></li><li class="depth-2 branch"><a href="beowulf.read.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>read</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>reader</span></div></div></li><li class="depth-3 branch"><a href="beowulf.reader.char-reader.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>char-reader</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.generate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>generate</span></div></a></li><li class="depth-3 branch current"><a href="beowulf.reader.macros.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>macros</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li><li class="depth-3"><a href="beowulf.reader.simplify.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simplify</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="beowulf.reader.macros.html#var-*readmacros*"><div class="inner"><span>*readmacros*</span></div></a></li><li class="depth-1"><a href="beowulf.reader.macros.html#var-expand-macros"><div class="inner"><span>expand-macros</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">beowulf.reader.macros</h1><div class="doc"><div class="markdown"><p>Can I implement reader macros? let’s see!</p> <p>We don’t need (at least, in the Clojure reader) to rewrite forms like <code>'FOO</code>, because that’s handled by the parser. But we do need to rewrite things which don’t evaluate their arguments, like <code>SETQ</code>, because (unless LABEL does it, which I’m not yet sure of) we’re not yet able to implement things which don’t evaluate arguments.</p> <p>TODO: at this stage, the following should probably also be read macros: DEFINE</p></div></div><div class="public anchor" id="var-*readmacros*"><h3>*readmacros*</h3><h4 class="dynamic">dynamic</h4><div class="usage"></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/reader/macros.clj#L47">view source</a></div></div><div class="public anchor" id="var-expand-macros"><h3>expand-macros</h3><div class="usage"><code>(expand-macros form)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/reader/macros.clj#L53">view source</a></div></div></div></body></html> \ No newline at end of file diff --git a/docs/codox/beowulf.reader.parser.html b/docs/codox/beowulf.reader.parser.html index 92309e8..c8a00f9 100644 --- a/docs/codox/beowulf.reader.parser.html +++ b/docs/codox/beowulf.reader.parser.html @@ -1,3 +1,3 @@ <!DOCTYPE html PUBLIC "" ""> -<html><head><meta charset="UTF-8" /><title>beowulf.reader.parser documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Beowulf</span> <span class="project-version">0.3.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="intro.html"><div class="inner"><span>beowulf</span></div></a></li><li class="depth-1 "><a href="mexpr.html"><div class="inner"><span>Interpreting M-Expressions</span></div></a></li><li class="depth-1 "><a href="values.html"><div class="inner"><span>Understanding values and properties</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>beowulf</span></div></div></li><li class="depth-2 branch"><a href="beowulf.bootstrap.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bootstrap</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cons-cell</span></div></a></li><li class="depth-2 branch"><a href="beowulf.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2 branch"><a href="beowulf.gendoc.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>gendoc</span></div></a></li><li class="depth-2 branch"><a href="beowulf.host.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>host</span></div></a></li><li class="depth-2 branch"><a href="beowulf.io.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>io</span></div></a></li><li class="depth-2 branch"><a href="beowulf.manual.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>manual</span></div></a></li><li class="depth-2 branch"><a href="beowulf.oblist.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>oblist</span></div></a></li><li class="depth-2 branch"><a href="beowulf.read.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>read</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>reader</span></div></div></li><li class="depth-3 branch"><a href="beowulf.reader.char-reader.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>char-reader</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.generate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>generate</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.macros.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>macros</span></div></a></li><li class="depth-3 branch current"><a href="beowulf.reader.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li><li class="depth-3"><a href="beowulf.reader.simplify.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simplify</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="beowulf.reader.parser.html#var-parse"><div class="inner"><span>parse</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">beowulf.reader.parser</h1><div class="doc"><div class="markdown"><p>The actual parser, supporting both S-expression and M-expression syntax.</p></div></div><div class="public anchor" id="var-parse"><h3>parse</h3><div class="usage"></div><div class="doc"><div class="markdown"><p>Parse a string presented as argument into a parse tree which can then be operated upon further.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/reader/parser.clj#L25">view source</a></div></div></div></body></html> \ No newline at end of file +<html><head><meta charset="UTF-8" /><title>beowulf.reader.parser documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Beowulf</span> <span class="project-version">0.3.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="further_reading.html"><div class="inner"><span>Further Reading</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>beowulf</span></div></a></li><li class="depth-1 "><a href="mexpr.html"><div class="inner"><span>Interpreting M-Expressions</span></div></a></li><li class="depth-1 "><a href="values.html"><div class="inner"><span>The properties of the system, and their values: here be dragons</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>beowulf</span></div></div></li><li class="depth-2 branch"><a href="beowulf.bootstrap.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bootstrap</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cons-cell</span></div></a></li><li class="depth-2 branch"><a href="beowulf.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2 branch"><a href="beowulf.gendoc.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>gendoc</span></div></a></li><li class="depth-2 branch"><a href="beowulf.host.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>host</span></div></a></li><li class="depth-2 branch"><a href="beowulf.interop.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>interop</span></div></a></li><li class="depth-2 branch"><a href="beowulf.io.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>io</span></div></a></li><li class="depth-2 branch"><a href="beowulf.manual.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>manual</span></div></a></li><li class="depth-2 branch"><a href="beowulf.oblist.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>oblist</span></div></a></li><li class="depth-2 branch"><a href="beowulf.read.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>read</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>reader</span></div></div></li><li class="depth-3 branch"><a href="beowulf.reader.char-reader.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>char-reader</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.generate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>generate</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.macros.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>macros</span></div></a></li><li class="depth-3 branch current"><a href="beowulf.reader.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li><li class="depth-3"><a href="beowulf.reader.simplify.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simplify</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="beowulf.reader.parser.html#var-parse"><div class="inner"><span>parse</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">beowulf.reader.parser</h1><div class="doc"><div class="markdown"><p>The actual parser, supporting both S-expression and M-expression syntax.</p></div></div><div class="public anchor" id="var-parse"><h3>parse</h3><div class="usage"></div><div class="doc"><div class="markdown"><p>Parse a string presented as argument into a parse tree which can then be operated upon further.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/reader/parser.clj#L25">view source</a></div></div></div></body></html> \ No newline at end of file diff --git a/docs/codox/beowulf.reader.simplify.html b/docs/codox/beowulf.reader.simplify.html index f2adfb6..ad3ea31 100644 --- a/docs/codox/beowulf.reader.simplify.html +++ b/docs/codox/beowulf.reader.simplify.html @@ -1,4 +1,4 @@ <!DOCTYPE html PUBLIC "" ""> -<html><head><meta charset="UTF-8" /><title>beowulf.reader.simplify documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Beowulf</span> <span class="project-version">0.3.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="intro.html"><div class="inner"><span>beowulf</span></div></a></li><li class="depth-1 "><a href="mexpr.html"><div class="inner"><span>Interpreting M-Expressions</span></div></a></li><li class="depth-1 "><a href="values.html"><div class="inner"><span>Understanding values and properties</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>beowulf</span></div></div></li><li class="depth-2 branch"><a href="beowulf.bootstrap.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bootstrap</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cons-cell</span></div></a></li><li class="depth-2 branch"><a href="beowulf.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2 branch"><a href="beowulf.gendoc.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>gendoc</span></div></a></li><li class="depth-2 branch"><a href="beowulf.host.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>host</span></div></a></li><li class="depth-2 branch"><a href="beowulf.io.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>io</span></div></a></li><li class="depth-2 branch"><a href="beowulf.manual.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>manual</span></div></a></li><li class="depth-2 branch"><a href="beowulf.oblist.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>oblist</span></div></a></li><li class="depth-2 branch"><a href="beowulf.read.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>read</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>reader</span></div></div></li><li class="depth-3 branch"><a href="beowulf.reader.char-reader.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>char-reader</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.generate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>generate</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.macros.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>macros</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li><li class="depth-3 current"><a href="beowulf.reader.simplify.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simplify</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="beowulf.reader.simplify.html#var-remove-nesting"><div class="inner"><span>remove-nesting</span></div></a></li><li class="depth-1"><a href="beowulf.reader.simplify.html#var-remove-optional-space"><div class="inner"><span>remove-optional-space</span></div></a></li><li class="depth-1"><a href="beowulf.reader.simplify.html#var-simplify"><div class="inner"><span>simplify</span></div></a></li><li class="depth-1"><a href="beowulf.reader.simplify.html#var-simplify-tree"><div class="inner"><span>simplify-tree</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">beowulf.reader.simplify</h1><div class="doc"><div class="markdown"><p>Simplify parse trees. Be aware that this is very tightly coupled with the parser.</p></div></div><div class="public anchor" id="var-remove-nesting"><h3>remove-nesting</h3><div class="usage"><code>(remove-nesting tree context)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/reader/simplify.clj#L42">view source</a></div></div><div class="public anchor" id="var-remove-optional-space"><h3>remove-optional-space</h3><div class="usage"><code>(remove-optional-space tree)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/reader/simplify.clj#L30">view source</a></div></div><div class="public anchor" id="var-simplify"><h3>simplify</h3><div class="usage"><code>(simplify p)</code></div><div class="doc"><div class="markdown"><p>Simplify this parse tree <code>p</code>. If <code>p</code> is an instaparse failure object, throw an <code>ex-info</code>, with <code>p</code> as the value of its <code>:failure</code> key. Calls <code>remove-optional-space</code> before processing.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/reader/simplify.clj#L126">view source</a></div></div><div class="public anchor" id="var-simplify-tree"><h3>simplify-tree</h3><div class="usage"><code>(simplify-tree p)</code><code>(simplify-tree p context)</code></div><div class="doc"><div class="markdown"><p>Simplify this parse tree <code>p</code>. If <code>p</code> is an instaparse failure object, throw an <code>ex-info</code>, with <code>p</code> as the value of its <code>:failure</code> key.</p> +<html><head><meta charset="UTF-8" /><title>beowulf.reader.simplify documentation</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Beowulf</span> <span class="project-version">0.3.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="further_reading.html"><div class="inner"><span>Further Reading</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>beowulf</span></div></a></li><li class="depth-1 "><a href="mexpr.html"><div class="inner"><span>Interpreting M-Expressions</span></div></a></li><li class="depth-1 "><a href="values.html"><div class="inner"><span>The properties of the system, and their values: here be dragons</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>beowulf</span></div></div></li><li class="depth-2 branch"><a href="beowulf.bootstrap.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bootstrap</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cons-cell</span></div></a></li><li class="depth-2 branch"><a href="beowulf.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2 branch"><a href="beowulf.gendoc.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>gendoc</span></div></a></li><li class="depth-2 branch"><a href="beowulf.host.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>host</span></div></a></li><li class="depth-2 branch"><a href="beowulf.interop.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>interop</span></div></a></li><li class="depth-2 branch"><a href="beowulf.io.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>io</span></div></a></li><li class="depth-2 branch"><a href="beowulf.manual.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>manual</span></div></a></li><li class="depth-2 branch"><a href="beowulf.oblist.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>oblist</span></div></a></li><li class="depth-2 branch"><a href="beowulf.read.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>read</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>reader</span></div></div></li><li class="depth-3 branch"><a href="beowulf.reader.char-reader.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>char-reader</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.generate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>generate</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.macros.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>macros</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li><li class="depth-3 current"><a href="beowulf.reader.simplify.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simplify</span></div></a></li></ul></div><div class="sidebar secondary"><h3><a href="#top"><span class="inner">Public Vars</span></a></h3><ul><li class="depth-1"><a href="beowulf.reader.simplify.html#var-remove-nesting"><div class="inner"><span>remove-nesting</span></div></a></li><li class="depth-1"><a href="beowulf.reader.simplify.html#var-remove-optional-space"><div class="inner"><span>remove-optional-space</span></div></a></li><li class="depth-1"><a href="beowulf.reader.simplify.html#var-simplify"><div class="inner"><span>simplify</span></div></a></li><li class="depth-1"><a href="beowulf.reader.simplify.html#var-simplify-tree"><div class="inner"><span>simplify-tree</span></div></a></li></ul></div><div class="namespace-docs" id="content"><h1 class="anchor" id="top">beowulf.reader.simplify</h1><div class="doc"><div class="markdown"><p>Simplify parse trees. Be aware that this is very tightly coupled with the parser.</p></div></div><div class="public anchor" id="var-remove-nesting"><h3>remove-nesting</h3><div class="usage"><code>(remove-nesting tree context)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/reader/simplify.clj#L42">view source</a></div></div><div class="public anchor" id="var-remove-optional-space"><h3>remove-optional-space</h3><div class="usage"><code>(remove-optional-space tree)</code></div><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/reader/simplify.clj#L30">view source</a></div></div><div class="public anchor" id="var-simplify"><h3>simplify</h3><div class="usage"><code>(simplify p)</code></div><div class="doc"><div class="markdown"><p>Simplify this parse tree <code>p</code>. If <code>p</code> is an instaparse failure object, throw an <code>ex-info</code>, with <code>p</code> as the value of its <code>:failure</code> key. Calls <code>remove-optional-space</code> before processing.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/reader/simplify.clj#L126">view source</a></div></div><div class="public anchor" id="var-simplify-tree"><h3>simplify-tree</h3><div class="usage"><code>(simplify-tree p)</code><code>(simplify-tree p context)</code></div><div class="doc"><div class="markdown"><p>Simplify this parse tree <code>p</code>. If <code>p</code> is an instaparse failure object, throw an <code>ex-info</code>, with <code>p</code> as the value of its <code>:failure</code> key.</p> <p><strong>NOTE THAT</strong> it is assumed that <code>remove-optional-space</code> has been run on the parse tree <strong>BEFORE</strong> it is passed to <code>simplify-tree</code>.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/reader/simplify.clj#L56">view source</a></div></div></div></body></html> \ No newline at end of file diff --git a/docs/codox/further_reading.html b/docs/codox/further_reading.html new file mode 100644 index 0000000..e536440 --- /dev/null +++ b/docs/codox/further_reading.html @@ -0,0 +1,17 @@ +<!DOCTYPE html PUBLIC "" + ""> +<html><head><meta charset="UTF-8" /><title>Further Reading</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Beowulf</span> <span class="project-version">0.3.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 current"><a href="further_reading.html"><div class="inner"><span>Further Reading</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>beowulf</span></div></a></li><li class="depth-1 "><a href="mexpr.html"><div class="inner"><span>Interpreting M-Expressions</span></div></a></li><li class="depth-1 "><a href="values.html"><div class="inner"><span>The properties of the system, and their values: here be dragons</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>beowulf</span></div></div></li><li class="depth-2 branch"><a href="beowulf.bootstrap.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bootstrap</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cons-cell</span></div></a></li><li class="depth-2 branch"><a href="beowulf.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2 branch"><a href="beowulf.gendoc.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>gendoc</span></div></a></li><li class="depth-2 branch"><a href="beowulf.host.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>host</span></div></a></li><li class="depth-2 branch"><a href="beowulf.interop.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>interop</span></div></a></li><li class="depth-2 branch"><a href="beowulf.io.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>io</span></div></a></li><li class="depth-2 branch"><a href="beowulf.manual.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>manual</span></div></a></li><li class="depth-2 branch"><a href="beowulf.oblist.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>oblist</span></div></a></li><li class="depth-2 branch"><a href="beowulf.read.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>read</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>reader</span></div></div></li><li class="depth-3 branch"><a href="beowulf.reader.char-reader.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>char-reader</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.generate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>generate</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.macros.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>macros</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li><li class="depth-3"><a href="beowulf.reader.simplify.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simplify</span></div></a></li></ul></div><div class="document" id="content"><div class="doc"><div class="markdown"><h1><a href="#further-reading" name="further-reading"></a>Further Reading</h1> +<ol> + <li><a href="http://bitsavers.org/pdf/mit/computer_center/Coding_for_the_MIT-IBM_704_Computer_Oct57.pdf">CODING for the MIT-IBM 704 COMPUTER, October 1957</a> This paper is not about Lisp. But it is about the particular individual computer on which Lisp was first implemented, and it is written in part by members of the Lisp team. I have found it useful in understanding the software environment in which, and the constraints under which, Lisp was written.</li> + <li><a href="https://www.softwarepreservation.org/projects/LISP/MIT/AIM-001.pdf">MIT AI Memo 1, John McCarthy, September 1958</a> This is, as far as I can find, the earliest specification document of the Lisp project.</li> + <li><a href="https://bitsavers.org/pdf/mit/rle_lisp/LISP_I_Programmers_Manual_Mar60.pdf">Lisp 1 Programmer’s Manual, Phyllis Fox, March 1960</a></li> + <li><a href="https://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf#page=81">Lisp 1.5 Programmer’s Manual, Michael I. Levin, August 1962</a> This book is essential reading: it documents in some detail the first fully realised Lisp language system.</li> + <li><a href="https://dl.acm.org/doi/pdf/10.1145/800055.802047#page=3">Early LISP History (1956 - 1959), Herbert Stoyan, August 1984</a></li> + <li> + <p><a href="http://www.paulgraham.com/rootsoflisp.html">The Roots of Lisp, Paul Graham, 2001</a></p></li> + <li> + <p><a href="http://www.paulgraham.com/icad.html">The Revenge of the Nerds, Paul Graham, 2002</a> This is mainly about why to use Lisp as a language for modern commercial software, but has useful insights into where it comes from.</p> + <blockquote> + <p>So the short explanation of why this 1950s language is not obsolete is that it was not technology but math, and math doesn’t get stale.</p> + </blockquote></li> +</ol></div></div></div></body></html> \ No newline at end of file diff --git a/docs/codox/index.html b/docs/codox/index.html index 54a0ed5..9b2f58b 100644 --- a/docs/codox/index.html +++ b/docs/codox/index.html @@ -1,3 +1,3 @@ <!DOCTYPE html PUBLIC "" ""> -<html><head><meta charset="UTF-8" /><title>Beowulf 0.3.0-SNAPSHOT</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Beowulf</span> <span class="project-version">0.3.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 current"><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="intro.html"><div class="inner"><span>beowulf</span></div></a></li><li class="depth-1 "><a href="mexpr.html"><div class="inner"><span>Interpreting M-Expressions</span></div></a></li><li class="depth-1 "><a href="values.html"><div class="inner"><span>Understanding values and properties</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>beowulf</span></div></div></li><li class="depth-2 branch"><a href="beowulf.bootstrap.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bootstrap</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cons-cell</span></div></a></li><li class="depth-2 branch"><a href="beowulf.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2 branch"><a href="beowulf.gendoc.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>gendoc</span></div></a></li><li class="depth-2 branch"><a href="beowulf.host.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>host</span></div></a></li><li class="depth-2 branch"><a href="beowulf.io.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>io</span></div></a></li><li class="depth-2 branch"><a href="beowulf.manual.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>manual</span></div></a></li><li class="depth-2 branch"><a href="beowulf.oblist.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>oblist</span></div></a></li><li class="depth-2 branch"><a href="beowulf.read.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>read</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>reader</span></div></div></li><li class="depth-3 branch"><a href="beowulf.reader.char-reader.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>char-reader</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.generate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>generate</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.macros.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>macros</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li><li class="depth-3"><a href="beowulf.reader.simplify.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simplify</span></div></a></li></ul></div><div class="namespace-index" id="content"><h1><span class="project-title"><span class="project-name">Beowulf</span> <span class="project-version">0.3.0-SNAPSHOT</span></span></h1><h5 class="license">Released under the <a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html">GPL-2.0-or-later</a></h5><div class="doc"><p>An implementation of LISP 1.5 in Clojure.</p></div><h2>Installation</h2><p>To install, add the following dependency to your project or build file:</p><pre class="deps">[beowulf "0.3.0-SNAPSHOT"]</pre><h2>Topics</h2><ul class="topics"><li><a href="intro.html">beowulf</a></li><li><a href="mexpr.html">Interpreting M-Expressions</a></li><li><a href="values.html">Understanding values and properties</a></li></ul><h2>Namespaces</h2><div class="namespace"><h3><a href="beowulf.bootstrap.html">beowulf.bootstrap</a></h3><div class="doc"><div class="markdown"><p>Lisp as defined in Chapter 1 (pages 1-14) of the <code>Lisp 1.5 Programmer's Manual</code>; that is to say, a very simple Lisp language, which should, I believe, be sufficient in conjunction with the functions provided by <code>beowulf.host</code>, be sufficient to bootstrap the full Lisp 1.5 interpreter..</p></div></div><div class="index"><p>Public variables and functions:</p><ul><li> <a href="beowulf.bootstrap.html#var-APPLY">APPLY</a> </li><li> <a href="beowulf.bootstrap.html#var-CAAAAR">CAAAAR</a> </li><li> <a href="beowulf.bootstrap.html#var-CAAADR">CAAADR</a> </li><li> <a href="beowulf.bootstrap.html#var-CAAAR">CAAAR</a> </li><li> <a href="beowulf.bootstrap.html#var-CAADAR">CAADAR</a> </li><li> <a href="beowulf.bootstrap.html#var-CAADDR">CAADDR</a> </li><li> <a href="beowulf.bootstrap.html#var-CAADR">CAADR</a> </li><li> <a href="beowulf.bootstrap.html#var-CAAR">CAAR</a> </li><li> <a href="beowulf.bootstrap.html#var-CADAAR">CADAAR</a> </li><li> <a href="beowulf.bootstrap.html#var-CADADR">CADADR</a> </li><li> <a href="beowulf.bootstrap.html#var-CADAR">CADAR</a> </li><li> <a href="beowulf.bootstrap.html#var-CADDAR">CADDAR</a> </li><li> <a href="beowulf.bootstrap.html#var-CADDDR">CADDDR</a> </li><li> <a href="beowulf.bootstrap.html#var-CADDR">CADDR</a> </li><li> <a href="beowulf.bootstrap.html#var-CADR">CADR</a> </li><li> <a href="beowulf.bootstrap.html#var-CDAAAR">CDAAAR</a> </li><li> <a href="beowulf.bootstrap.html#var-CDAADR">CDAADR</a> </li><li> <a href="beowulf.bootstrap.html#var-CDAAR">CDAAR</a> </li><li> <a href="beowulf.bootstrap.html#var-CDADAR">CDADAR</a> </li><li> <a href="beowulf.bootstrap.html#var-CDADDR">CDADDR</a> </li><li> <a href="beowulf.bootstrap.html#var-CDADR">CDADR</a> </li><li> <a href="beowulf.bootstrap.html#var-CDAR">CDAR</a> </li><li> <a href="beowulf.bootstrap.html#var-CDDAAR">CDDAAR</a> </li><li> <a href="beowulf.bootstrap.html#var-CDDADR">CDDADR</a> </li><li> <a href="beowulf.bootstrap.html#var-CDDAR">CDDAR</a> </li><li> <a href="beowulf.bootstrap.html#var-CDDDAR">CDDDAR</a> </li><li> <a href="beowulf.bootstrap.html#var-CDDDDR">CDDDDR</a> </li><li> <a href="beowulf.bootstrap.html#var-CDDDR">CDDDR</a> </li><li> <a href="beowulf.bootstrap.html#var-CDDR">CDDR</a> </li><li> <a href="beowulf.bootstrap.html#var-EVAL">EVAL</a> </li><li> <a href="beowulf.bootstrap.html#var-INTEROP">INTEROP</a> </li><li> <a href="beowulf.bootstrap.html#var-interop-interpret-q-name">interop-interpret-q-name</a> </li><li> <a href="beowulf.bootstrap.html#var-QUOTE">QUOTE</a> </li><li> <a href="beowulf.bootstrap.html#var-to-beowulf">to-beowulf</a> </li><li> <a href="beowulf.bootstrap.html#var-to-clojure">to-clojure</a> </li><li> <a href="beowulf.bootstrap.html#var-uaf">uaf</a> </li></ul></div></div><div class="namespace"><h3><a href="beowulf.cons-cell.html">beowulf.cons-cell</a></h3><div class="doc"><div class="markdown"><p>The fundamental cons cell on which all Lisp structures are built. Lisp 1.5 lists do not necessarily have a sequence as their CDR, and must have both CAR and CDR mutable, so cannot be implemented on top of Clojure lists.</p></div></div><div class="index"><p>Public variables and functions:</p><ul><li> <a href="beowulf.cons-cell.html#var-cons-cell.3F">cons-cell?</a> </li><li> <a href="beowulf.cons-cell.html#var-F">F</a> </li><li> <a href="beowulf.cons-cell.html#var-make-beowulf-list">make-beowulf-list</a> </li><li> <a href="beowulf.cons-cell.html#var-make-cons-cell">make-cons-cell</a> </li><li> <a href="beowulf.cons-cell.html#var-MutableSequence">MutableSequence</a> </li><li> <a href="beowulf.cons-cell.html#var-pretty-print">pretty-print</a> </li><li> <a href="beowulf.cons-cell.html#var-T">T</a> </li></ul></div></div><div class="namespace"><h3><a href="beowulf.core.html">beowulf.core</a></h3><div class="doc"><div class="markdown"><p>Essentially, the <code>-main</code> function and the bootstrap read-eval-print loop.</p></div></div><div class="index"><p>Public variables and functions:</p><ul><li> <a href="beowulf.core.html#var--main">-main</a> </li><li> <a href="beowulf.core.html#var-cli-options">cli-options</a> </li><li> <a href="beowulf.core.html#var-repl">repl</a> </li><li> <a href="beowulf.core.html#var-stop-word">stop-word</a> </li></ul></div></div><div class="namespace"><h3><a href="beowulf.gendoc.html">beowulf.gendoc</a></h3><div class="doc"><div class="markdown"><p>Generate table of documentation of Lisp symbols and functions.</p></div></div><div class="index"><p>Public variables and functions:</p><ul><li> <a href="beowulf.gendoc.html#var-find-documentation">find-documentation</a> </li><li> <a href="beowulf.gendoc.html#var-gen-doc-table">gen-doc-table</a> </li><li> <a href="beowulf.gendoc.html#var-gen-index">gen-index</a> </li><li> <a href="beowulf.gendoc.html#var-host-functions">host-functions</a> </li><li> <a href="beowulf.gendoc.html#var-infer-implementation">infer-implementation</a> </li><li> <a href="beowulf.gendoc.html#var-infer-signature">infer-signature</a> </li><li> <a href="beowulf.gendoc.html#var-infer-type">infer-type</a> </li><li> <a href="beowulf.gendoc.html#var-open-doc">open-doc</a> </li></ul></div></div><div class="namespace"><h3><a href="beowulf.host.html">beowulf.host</a></h3><div class="doc"><div class="markdown"><p>provides Lisp 1.5 functions which can’t be (or can’t efficiently be) implemented in Lisp 1.5, which therefore need to be implemented in the host language, in this case Clojure.</p></div></div><div class="index"><p>Public variables and functions:</p><ul><li> <a href="beowulf.host.html#var-ADD1">ADD1</a> </li><li> <a href="beowulf.host.html#var-AND">AND</a> </li><li> <a href="beowulf.host.html#var-ASSOC">ASSOC</a> </li><li> <a href="beowulf.host.html#var-ATOM">ATOM</a> </li><li> <a href="beowulf.host.html#var-ATOM.3F">ATOM?</a> </li><li> <a href="beowulf.host.html#var-CAAAAR">CAAAAR</a> </li><li> <a href="beowulf.host.html#var-CAAADR">CAAADR</a> </li><li> <a href="beowulf.host.html#var-CAAAR">CAAAR</a> </li><li> <a href="beowulf.host.html#var-CAADAR">CAADAR</a> </li><li> <a href="beowulf.host.html#var-CAADDR">CAADDR</a> </li><li> <a href="beowulf.host.html#var-CAADR">CAADR</a> </li><li> <a href="beowulf.host.html#var-CAAR">CAAR</a> </li><li> <a href="beowulf.host.html#var-CADAAR">CADAAR</a> </li><li> <a href="beowulf.host.html#var-CADADR">CADADR</a> </li><li> <a href="beowulf.host.html#var-CADAR">CADAR</a> </li><li> <a href="beowulf.host.html#var-CADDAR">CADDAR</a> </li><li> <a href="beowulf.host.html#var-CADDDR">CADDDR</a> </li><li> <a href="beowulf.host.html#var-CADDR">CADDR</a> </li><li> <a href="beowulf.host.html#var-CADR">CADR</a> </li><li> <a href="beowulf.host.html#var-CAR">CAR</a> </li><li> <a href="beowulf.host.html#var-CDAAAR">CDAAAR</a> </li><li> <a href="beowulf.host.html#var-CDAADR">CDAADR</a> </li><li> <a href="beowulf.host.html#var-CDAAR">CDAAR</a> </li><li> <a href="beowulf.host.html#var-CDADAR">CDADAR</a> </li><li> <a href="beowulf.host.html#var-CDADDR">CDADDR</a> </li><li> <a href="beowulf.host.html#var-CDADR">CDADR</a> </li><li> <a href="beowulf.host.html#var-CDAR">CDAR</a> </li><li> <a href="beowulf.host.html#var-CDDAAR">CDDAAR</a> </li><li> <a href="beowulf.host.html#var-CDDADR">CDDADR</a> </li><li> <a href="beowulf.host.html#var-CDDAR">CDDAR</a> </li><li> <a href="beowulf.host.html#var-CDDDAR">CDDDAR</a> </li><li> <a href="beowulf.host.html#var-CDDDDR">CDDDDR</a> </li><li> <a href="beowulf.host.html#var-CDDDR">CDDDR</a> </li><li> <a href="beowulf.host.html#var-CDDR">CDDR</a> </li><li> <a href="beowulf.host.html#var-CDR">CDR</a> </li><li> <a href="beowulf.host.html#var-CONS">CONS</a> </li><li> <a href="beowulf.host.html#var-CONSP">CONSP</a> </li><li> <a href="beowulf.host.html#var-DEFINE">DEFINE</a> </li><li> <a href="beowulf.host.html#var-DIFFERENCE">DIFFERENCE</a> </li><li> <a href="beowulf.host.html#var-DOC">DOC</a> </li><li> <a href="beowulf.host.html#var-EQ">EQ</a> </li><li> <a href="beowulf.host.html#var-EQUAL">EQUAL</a> </li><li> <a href="beowulf.host.html#var-ERROR">ERROR</a> </li><li> <a href="beowulf.host.html#var-FIXP">FIXP</a> </li><li> <a href="beowulf.host.html#var-GENSYM">GENSYM</a> </li><li> <a href="beowulf.host.html#var-GREATERP">GREATERP</a> </li><li> <a href="beowulf.host.html#var-lax.3F">lax?</a> </li><li> <a href="beowulf.host.html#var-LESSP">LESSP</a> </li><li> <a href="beowulf.host.html#var-LIST">LIST</a> </li><li> <a href="beowulf.host.html#var-NILP">NILP</a> </li><li> <a href="beowulf.host.html#var-NULL">NULL</a> </li><li> <a href="beowulf.host.html#var-NUMBERP">NUMBERP</a> </li><li> <a href="beowulf.host.html#var-OBLIST">OBLIST</a> </li><li> <a href="beowulf.host.html#var-PAIRLIS">PAIRLIS</a> </li><li> <a href="beowulf.host.html#var-PLUS">PLUS</a> </li><li> <a href="beowulf.host.html#var-QUOTIENT">QUOTIENT</a> </li><li> <a href="beowulf.host.html#var-REMAINDER">REMAINDER</a> </li><li> <a href="beowulf.host.html#var-RPLACA">RPLACA</a> </li><li> <a href="beowulf.host.html#var-RPLACD">RPLACD</a> </li><li> <a href="beowulf.host.html#var-SET">SET</a> </li><li> <a href="beowulf.host.html#var-SUB1">SUB1</a> </li><li> <a href="beowulf.host.html#var-TIMES">TIMES</a> </li><li> <a href="beowulf.host.html#var-TRACE">TRACE</a> </li><li> <a href="beowulf.host.html#var-traced-symbols">traced-symbols</a> </li><li> <a href="beowulf.host.html#var-traced.3F">traced?</a> </li><li> <a href="beowulf.host.html#var-uaf">uaf</a> </li><li> <a href="beowulf.host.html#var-UNTRACE">UNTRACE</a> </li></ul></div></div><div class="namespace"><h3><a href="beowulf.io.html">beowulf.io</a></h3><div class="doc"><div class="markdown"><p>Non-standard extensions to Lisp 1.5 to read and write to the filesystem.</p></div></div><div class="index"><p>Public variables and functions:</p><ul><li> <a href="beowulf.io.html#var-default-sysout">default-sysout</a> </li><li> <a href="beowulf.io.html#var-SYSIN">SYSIN</a> </li><li> <a href="beowulf.io.html#var-SYSOUT">SYSOUT</a> </li></ul></div></div><div class="namespace"><h3><a href="beowulf.manual.html">beowulf.manual</a></h3><div class="doc"><div class="markdown"><p>Experimental code for accessing the manual online.</p></div></div><div class="index"><p>Public variables and functions:</p><ul><li> <a href="beowulf.manual.html#var-*manual-url*">*manual-url*</a> </li><li> <a href="beowulf.manual.html#var-format-page-references">format-page-references</a> </li><li> <a href="beowulf.manual.html#var-index">index</a> </li><li> <a href="beowulf.manual.html#var-page-url">page-url</a> </li></ul></div></div><div class="namespace"><h3><a href="beowulf.oblist.html">beowulf.oblist</a></h3><div class="doc"><div class="markdown"><p>A namespace mainly devoted to the object list and other top level global variables.</p></div></div><div class="index"><p>Public variables and functions:</p><ul><li> <a href="beowulf.oblist.html#var-*options*">*options*</a> </li><li> <a href="beowulf.oblist.html#var-NIL">NIL</a> </li><li> <a href="beowulf.oblist.html#var-oblist">oblist</a> </li></ul></div></div><div class="namespace"><h3><a href="beowulf.read.html">beowulf.read</a></h3><div class="doc"><div class="markdown"><p>This provides the reader required for boostrapping. It’s not a bad reader - it provides feedback on errors found in the input - but it isn’t the real Lisp reader.</p></div></div><div class="index"><p>Public variables and functions:</p><ul><li> <a href="beowulf.read.html#var-gsp">gsp</a> </li><li> <a href="beowulf.read.html#var-number-lines">number-lines</a> </li><li> <a href="beowulf.read.html#var-READ">READ</a> </li><li> <a href="beowulf.read.html#var-read-from-console">read-from-console</a> </li><li> <a href="beowulf.read.html#var-strip-line-comments">strip-line-comments</a> </li></ul></div></div><div class="namespace"><h3><a href="beowulf.reader.char-reader.html">beowulf.reader.char-reader</a></h3><div class="doc"><div class="markdown"><p>Provide sensible line editing, auto completion, and history recall.</p></div></div><div class="index"><p>Public variables and functions:</p><ul><li> <a href="beowulf.reader.char-reader.html#var-get-reader">get-reader</a> </li><li> <a href="beowulf.reader.char-reader.html#var-read-chars">read-chars</a> </li></ul></div></div><div class="namespace"><h3><a href="beowulf.reader.generate.html">beowulf.reader.generate</a></h3><div class="doc"><div class="markdown"><p>Generating S-Expressions from parse trees. </p></div></div><div class="index"><p>Public variables and functions:</p><ul><li> <a href="beowulf.reader.generate.html#var-gen-cond">gen-cond</a> </li><li> <a href="beowulf.reader.generate.html#var-gen-cond-clause">gen-cond-clause</a> </li><li> <a href="beowulf.reader.generate.html#var-gen-dot-terminated-list">gen-dot-terminated-list</a> </li><li> <a href="beowulf.reader.generate.html#var-gen-fn-call">gen-fn-call</a> </li><li> <a href="beowulf.reader.generate.html#var-gen-iexpr">gen-iexpr</a> </li><li> <a href="beowulf.reader.generate.html#var-generate">generate</a> </li><li> <a href="beowulf.reader.generate.html#var-generate-assign">generate-assign</a> </li><li> <a href="beowulf.reader.generate.html#var-generate-defn">generate-defn</a> </li><li> <a href="beowulf.reader.generate.html#var-generate-set">generate-set</a> </li><li> <a href="beowulf.reader.generate.html#var-strip-leading-zeros">strip-leading-zeros</a> </li></ul></div></div><div class="namespace"><h3><a href="beowulf.reader.macros.html">beowulf.reader.macros</a></h3><div class="doc"><div class="markdown"><p>Can I implement reader macros? let’s see!</p></div></div><div class="index"><p>Public variables and functions:</p><ul><li> <a href="beowulf.reader.macros.html#var-*readmacros*">*readmacros*</a> </li><li> <a href="beowulf.reader.macros.html#var-expand-macros">expand-macros</a> </li></ul></div></div><div class="namespace"><h3><a href="beowulf.reader.parser.html">beowulf.reader.parser</a></h3><div class="doc"><div class="markdown"><p>The actual parser, supporting both S-expression and M-expression syntax.</p></div></div><div class="index"><p>Public variables and functions:</p><ul><li> <a href="beowulf.reader.parser.html#var-parse">parse</a> </li></ul></div></div><div class="namespace"><h3><a href="beowulf.reader.simplify.html">beowulf.reader.simplify</a></h3><div class="doc"><div class="markdown"><p>Simplify parse trees. Be aware that this is very tightly coupled with the parser.</p></div></div><div class="index"><p>Public variables and functions:</p><ul><li> <a href="beowulf.reader.simplify.html#var-remove-nesting">remove-nesting</a> </li><li> <a href="beowulf.reader.simplify.html#var-remove-optional-space">remove-optional-space</a> </li><li> <a href="beowulf.reader.simplify.html#var-simplify">simplify</a> </li><li> <a href="beowulf.reader.simplify.html#var-simplify-tree">simplify-tree</a> </li></ul></div></div></div></body></html> \ No newline at end of file +<html><head><meta charset="UTF-8" /><title>Beowulf 0.3.0-SNAPSHOT</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Beowulf</span> <span class="project-version">0.3.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 current"><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="further_reading.html"><div class="inner"><span>Further Reading</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>beowulf</span></div></a></li><li class="depth-1 "><a href="mexpr.html"><div class="inner"><span>Interpreting M-Expressions</span></div></a></li><li class="depth-1 "><a href="values.html"><div class="inner"><span>The properties of the system, and their values: here be dragons</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>beowulf</span></div></div></li><li class="depth-2 branch"><a href="beowulf.bootstrap.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bootstrap</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cons-cell</span></div></a></li><li class="depth-2 branch"><a href="beowulf.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2 branch"><a href="beowulf.gendoc.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>gendoc</span></div></a></li><li class="depth-2 branch"><a href="beowulf.host.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>host</span></div></a></li><li class="depth-2 branch"><a href="beowulf.interop.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>interop</span></div></a></li><li class="depth-2 branch"><a href="beowulf.io.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>io</span></div></a></li><li class="depth-2 branch"><a href="beowulf.manual.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>manual</span></div></a></li><li class="depth-2 branch"><a href="beowulf.oblist.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>oblist</span></div></a></li><li class="depth-2 branch"><a href="beowulf.read.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>read</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>reader</span></div></div></li><li class="depth-3 branch"><a href="beowulf.reader.char-reader.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>char-reader</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.generate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>generate</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.macros.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>macros</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li><li class="depth-3"><a href="beowulf.reader.simplify.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simplify</span></div></a></li></ul></div><div class="namespace-index" id="content"><h1><span class="project-title"><span class="project-name">Beowulf</span> <span class="project-version">0.3.0-SNAPSHOT</span></span></h1><h5 class="license">Released under the <a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html">GPL-2.0-or-later</a></h5><div class="doc"><p>An implementation of LISP 1.5 in Clojure.</p></div><h2>Installation</h2><p>To install, add the following dependency to your project or build file:</p><pre class="deps">[beowulf "0.3.0-SNAPSHOT"]</pre><h2>Topics</h2><ul class="topics"><li><a href="further_reading.html">Further Reading</a></li><li><a href="intro.html">beowulf</a></li><li><a href="mexpr.html">Interpreting M-Expressions</a></li><li><a href="values.html">The properties of the system, and their values: here be dragons</a></li></ul><h2>Namespaces</h2><div class="namespace"><h3><a href="beowulf.bootstrap.html">beowulf.bootstrap</a></h3><div class="doc"><div class="markdown"><p>Lisp as defined in Chapter 1 (pages 1-14) of the <code>Lisp 1.5 Programmer's Manual</code>; that is to say, a very simple Lisp language, which should, I believe, be sufficient in conjunction with the functions provided by <code>beowulf.host</code>, be sufficient to bootstrap the full Lisp 1.5 interpreter..</p></div></div><div class="index"><p>Public variables and functions:</p><ul><li> <a href="beowulf.bootstrap.html#var-APPLY">APPLY</a> </li><li> <a href="beowulf.bootstrap.html#var-EVAL">EVAL</a> </li><li> <a href="beowulf.bootstrap.html#var-find-target">find-target</a> </li><li> <a href="beowulf.bootstrap.html#var-PROG">PROG</a> </li><li> <a href="beowulf.bootstrap.html#var-prog-eval">prog-eval</a> </li><li> <a href="beowulf.bootstrap.html#var-try-resolve-subroutine">try-resolve-subroutine</a> </li></ul></div></div><div class="namespace"><h3><a href="beowulf.cons-cell.html">beowulf.cons-cell</a></h3><div class="doc"><div class="markdown"><p>The fundamental cons cell on which all Lisp structures are built. Lisp 1.5 lists do not necessarily have a sequence as their CDR, and must have both CAR and CDR mutable, so cannot be implemented on top of Clojure lists.</p></div></div><div class="index"><p>Public variables and functions:</p><ul><li> <a href="beowulf.cons-cell.html#var-cons-cell.3F">cons-cell?</a> </li><li> <a href="beowulf.cons-cell.html#var-F">F</a> </li><li> <a href="beowulf.cons-cell.html#var-make-beowulf-list">make-beowulf-list</a> </li><li> <a href="beowulf.cons-cell.html#var-make-cons-cell">make-cons-cell</a> </li><li> <a href="beowulf.cons-cell.html#var-MutableSequence">MutableSequence</a> </li><li> <a href="beowulf.cons-cell.html#var-pretty-print">pretty-print</a> </li><li> <a href="beowulf.cons-cell.html#var-T">T</a> </li></ul></div></div><div class="namespace"><h3><a href="beowulf.core.html">beowulf.core</a></h3><div class="doc"><div class="markdown"><p>Essentially, the <code>-main</code> function and the bootstrap read-eval-print loop.</p></div></div><div class="index"><p>Public variables and functions:</p><ul><li> <a href="beowulf.core.html#var--main">-main</a> </li><li> <a href="beowulf.core.html#var-cli-options">cli-options</a> </li><li> <a href="beowulf.core.html#var-repl">repl</a> </li><li> <a href="beowulf.core.html#var-stop-word">stop-word</a> </li></ul></div></div><div class="namespace"><h3><a href="beowulf.gendoc.html">beowulf.gendoc</a></h3><div class="doc"><div class="markdown"><p>Generate table of documentation of Lisp symbols and functions.</p></div></div><div class="index"><p>Public variables and functions:</p><ul><li> <a href="beowulf.gendoc.html#var-find-documentation">find-documentation</a> </li><li> <a href="beowulf.gendoc.html#var-gen-doc-table">gen-doc-table</a> </li><li> <a href="beowulf.gendoc.html#var-gen-index">gen-index</a> </li><li> <a href="beowulf.gendoc.html#var-host-functions">host-functions</a> </li><li> <a href="beowulf.gendoc.html#var-infer-implementation">infer-implementation</a> </li><li> <a href="beowulf.gendoc.html#var-infer-signature">infer-signature</a> </li><li> <a href="beowulf.gendoc.html#var-infer-type">infer-type</a> </li><li> <a href="beowulf.gendoc.html#var-open-doc">open-doc</a> </li></ul></div></div><div class="namespace"><h3><a href="beowulf.host.html">beowulf.host</a></h3><div class="doc"><div class="markdown"><p>provides Lisp 1.5 functions which can’t be (or can’t efficiently be) implemented in Lisp 1.5, which therefore need to be implemented in the host language, in this case Clojure.</p></div></div><div class="index"><p>Public variables and functions:</p><ul><li> <a href="beowulf.host.html#var-ADD1">ADD1</a> </li><li> <a href="beowulf.host.html#var-AND">AND</a> </li><li> <a href="beowulf.host.html#var-ASSOC">ASSOC</a> </li><li> <a href="beowulf.host.html#var-ATOM">ATOM</a> </li><li> <a href="beowulf.host.html#var-ATOM.3F">ATOM?</a> </li><li> <a href="beowulf.host.html#var-CAAAAR">CAAAAR</a> </li><li> <a href="beowulf.host.html#var-CAAADR">CAAADR</a> </li><li> <a href="beowulf.host.html#var-CAAAR">CAAAR</a> </li><li> <a href="beowulf.host.html#var-CAADAR">CAADAR</a> </li><li> <a href="beowulf.host.html#var-CAADDR">CAADDR</a> </li><li> <a href="beowulf.host.html#var-CAADR">CAADR</a> </li><li> <a href="beowulf.host.html#var-CAAR">CAAR</a> </li><li> <a href="beowulf.host.html#var-CADAAR">CADAAR</a> </li><li> <a href="beowulf.host.html#var-CADADR">CADADR</a> </li><li> <a href="beowulf.host.html#var-CADAR">CADAR</a> </li><li> <a href="beowulf.host.html#var-CADDAR">CADDAR</a> </li><li> <a href="beowulf.host.html#var-CADDDR">CADDDR</a> </li><li> <a href="beowulf.host.html#var-CADDR">CADDR</a> </li><li> <a href="beowulf.host.html#var-CADR">CADR</a> </li><li> <a href="beowulf.host.html#var-CAR">CAR</a> </li><li> <a href="beowulf.host.html#var-CDAAAR">CDAAAR</a> </li><li> <a href="beowulf.host.html#var-CDAADR">CDAADR</a> </li><li> <a href="beowulf.host.html#var-CDAAR">CDAAR</a> </li><li> <a href="beowulf.host.html#var-CDADAR">CDADAR</a> </li><li> <a href="beowulf.host.html#var-CDADDR">CDADDR</a> </li><li> <a href="beowulf.host.html#var-CDADR">CDADR</a> </li><li> <a href="beowulf.host.html#var-CDAR">CDAR</a> </li><li> <a href="beowulf.host.html#var-CDDAAR">CDDAAR</a> </li><li> <a href="beowulf.host.html#var-CDDADR">CDDADR</a> </li><li> <a href="beowulf.host.html#var-CDDAR">CDDAR</a> </li><li> <a href="beowulf.host.html#var-CDDDAR">CDDDAR</a> </li><li> <a href="beowulf.host.html#var-CDDDDR">CDDDDR</a> </li><li> <a href="beowulf.host.html#var-CDDDR">CDDDR</a> </li><li> <a href="beowulf.host.html#var-CDDR">CDDR</a> </li><li> <a href="beowulf.host.html#var-CDR">CDR</a> </li><li> <a href="beowulf.host.html#var-CONS">CONS</a> </li><li> <a href="beowulf.host.html#var-CONSP">CONSP</a> </li><li> <a href="beowulf.host.html#var-DEFINE">DEFINE</a> </li><li> <a href="beowulf.host.html#var-DEFLIST">DEFLIST</a> </li><li> <a href="beowulf.host.html#var-DIFFERENCE">DIFFERENCE</a> </li><li> <a href="beowulf.host.html#var-DOC">DOC</a> </li><li> <a href="beowulf.host.html#var-EQ">EQ</a> </li><li> <a href="beowulf.host.html#var-EQUAL">EQUAL</a> </li><li> <a href="beowulf.host.html#var-ERROR">ERROR</a> </li><li> <a href="beowulf.host.html#var-FIXP">FIXP</a> </li><li> <a href="beowulf.host.html#var-GENSYM">GENSYM</a> </li><li> <a href="beowulf.host.html#var-GET">GET</a> </li><li> <a href="beowulf.host.html#var-GREATERP">GREATERP</a> </li><li> <a href="beowulf.host.html#var-lax.3F">lax?</a> </li><li> <a href="beowulf.host.html#var-LESSP">LESSP</a> </li><li> <a href="beowulf.host.html#var-LIST">LIST</a> </li><li> <a href="beowulf.host.html#var-magic-marker">magic-marker</a> </li><li> <a href="beowulf.host.html#var-NILP">NILP</a> </li><li> <a href="beowulf.host.html#var-NULL">NULL</a> </li><li> <a href="beowulf.host.html#var-NUMBERP">NUMBERP</a> </li><li> <a href="beowulf.host.html#var-OBLIST">OBLIST</a> </li><li> <a href="beowulf.host.html#var-OR">OR</a> </li><li> <a href="beowulf.host.html#var-PAIRLIS">PAIRLIS</a> </li><li> <a href="beowulf.host.html#var-PLUS">PLUS</a> </li><li> <a href="beowulf.host.html#var-PUT">PUT</a> </li><li> <a href="beowulf.host.html#var-QUOTIENT">QUOTIENT</a> </li><li> <a href="beowulf.host.html#var-REMAINDER">REMAINDER</a> </li><li> <a href="beowulf.host.html#var-RPLACA">RPLACA</a> </li><li> <a href="beowulf.host.html#var-RPLACD">RPLACD</a> </li><li> <a href="beowulf.host.html#var-SET">SET</a> </li><li> <a href="beowulf.host.html#var-SUB1">SUB1</a> </li><li> <a href="beowulf.host.html#var-TIMES">TIMES</a> </li><li> <a href="beowulf.host.html#var-TRACE">TRACE</a> </li><li> <a href="beowulf.host.html#var-traced-symbols">traced-symbols</a> </li><li> <a href="beowulf.host.html#var-traced.3F">traced?</a> </li><li> <a href="beowulf.host.html#var-uaf">uaf</a> </li><li> <a href="beowulf.host.html#var-UNTRACE">UNTRACE</a> </li></ul></div></div><div class="namespace"><h3><a href="beowulf.interop.html">beowulf.interop</a></h3><div class="doc"><div class="markdown"><p><strong>TODO</strong>: write docs</p></div></div><div class="index"><p>Public variables and functions:</p><ul><li> <a href="beowulf.interop.html#var-INTEROP">INTEROP</a> </li><li> <a href="beowulf.interop.html#var-interpret-qualified-name">interpret-qualified-name</a> </li><li> <a href="beowulf.interop.html#var-listify-qualified-name">listify-qualified-name</a> </li><li> <a href="beowulf.interop.html#var-to-beowulf">to-beowulf</a> </li><li> <a href="beowulf.interop.html#var-to-clojure">to-clojure</a> </li></ul></div></div><div class="namespace"><h3><a href="beowulf.io.html">beowulf.io</a></h3><div class="doc"><div class="markdown"><p>Non-standard extensions to Lisp 1.5 to read and write to the filesystem.</p></div></div><div class="index"><p>Public variables and functions:</p><ul><li> <a href="beowulf.io.html#var-default-sysout">default-sysout</a> </li><li> <a href="beowulf.io.html#var-safely-wrap-subr">safely-wrap-subr</a> </li><li> <a href="beowulf.io.html#var-safely-wrap-subrs">safely-wrap-subrs</a> </li><li> <a href="beowulf.io.html#var-SYSIN">SYSIN</a> </li><li> <a href="beowulf.io.html#var-SYSOUT">SYSOUT</a> </li></ul></div></div><div class="namespace"><h3><a href="beowulf.manual.html">beowulf.manual</a></h3><div class="doc"><div class="markdown"><p>Experimental code for accessing the manual online.</p></div></div><div class="index"><p>Public variables and functions:</p><ul><li> <a href="beowulf.manual.html#var-*manual-url*">*manual-url*</a> </li><li> <a href="beowulf.manual.html#var-format-page-references">format-page-references</a> </li><li> <a href="beowulf.manual.html#var-index">index</a> </li><li> <a href="beowulf.manual.html#var-page-url">page-url</a> </li></ul></div></div><div class="namespace"><h3><a href="beowulf.oblist.html">beowulf.oblist</a></h3><div class="doc"><div class="markdown"><p>A namespace mainly devoted to the object list and other top level global variables.</p></div></div><div class="index"><p>Public variables and functions:</p><ul><li> <a href="beowulf.oblist.html#var-*options*">*options*</a> </li><li> <a href="beowulf.oblist.html#var-NIL">NIL</a> </li><li> <a href="beowulf.oblist.html#var-oblist">oblist</a> </li></ul></div></div><div class="namespace"><h3><a href="beowulf.read.html">beowulf.read</a></h3><div class="doc"><div class="markdown"><p>This provides the reader required for boostrapping. It’s not a bad reader - it provides feedback on errors found in the input - but it isn’t the real Lisp reader.</p></div></div><div class="index"><p>Public variables and functions:</p><ul><li> <a href="beowulf.read.html#var-gsp">gsp</a> </li><li> <a href="beowulf.read.html#var-number-lines">number-lines</a> </li><li> <a href="beowulf.read.html#var-READ">READ</a> </li><li> <a href="beowulf.read.html#var-read-from-console">read-from-console</a> </li><li> <a href="beowulf.read.html#var-strip-line-comments">strip-line-comments</a> </li></ul></div></div><div class="namespace"><h3><a href="beowulf.reader.char-reader.html">beowulf.reader.char-reader</a></h3><div class="doc"><div class="markdown"><p>Provide sensible line editing, auto completion, and history recall.</p></div></div><div class="index"><p>Public variables and functions:</p><ul><li> <a href="beowulf.reader.char-reader.html#var-get-reader">get-reader</a> </li><li> <a href="beowulf.reader.char-reader.html#var-read-chars">read-chars</a> </li></ul></div></div><div class="namespace"><h3><a href="beowulf.reader.generate.html">beowulf.reader.generate</a></h3><div class="doc"><div class="markdown"><p>Generating S-Expressions from parse trees. </p></div></div><div class="index"><p>Public variables and functions:</p><ul><li> <a href="beowulf.reader.generate.html#var-gen-cond">gen-cond</a> </li><li> <a href="beowulf.reader.generate.html#var-gen-cond-clause">gen-cond-clause</a> </li><li> <a href="beowulf.reader.generate.html#var-gen-dot-terminated-list">gen-dot-terminated-list</a> </li><li> <a href="beowulf.reader.generate.html#var-gen-fn-call">gen-fn-call</a> </li><li> <a href="beowulf.reader.generate.html#var-gen-iexpr">gen-iexpr</a> </li><li> <a href="beowulf.reader.generate.html#var-generate">generate</a> </li><li> <a href="beowulf.reader.generate.html#var-generate-assign">generate-assign</a> </li><li> <a href="beowulf.reader.generate.html#var-generate-defn">generate-defn</a> </li><li> <a href="beowulf.reader.generate.html#var-generate-set">generate-set</a> </li><li> <a href="beowulf.reader.generate.html#var-strip-leading-zeros">strip-leading-zeros</a> </li></ul></div></div><div class="namespace"><h3><a href="beowulf.reader.macros.html">beowulf.reader.macros</a></h3><div class="doc"><div class="markdown"><p>Can I implement reader macros? let’s see!</p></div></div><div class="index"><p>Public variables and functions:</p><ul><li> <a href="beowulf.reader.macros.html#var-*readmacros*">*readmacros*</a> </li><li> <a href="beowulf.reader.macros.html#var-expand-macros">expand-macros</a> </li></ul></div></div><div class="namespace"><h3><a href="beowulf.reader.parser.html">beowulf.reader.parser</a></h3><div class="doc"><div class="markdown"><p>The actual parser, supporting both S-expression and M-expression syntax.</p></div></div><div class="index"><p>Public variables and functions:</p><ul><li> <a href="beowulf.reader.parser.html#var-parse">parse</a> </li></ul></div></div><div class="namespace"><h3><a href="beowulf.reader.simplify.html">beowulf.reader.simplify</a></h3><div class="doc"><div class="markdown"><p>Simplify parse trees. Be aware that this is very tightly coupled with the parser.</p></div></div><div class="index"><p>Public variables and functions:</p><ul><li> <a href="beowulf.reader.simplify.html#var-remove-nesting">remove-nesting</a> </li><li> <a href="beowulf.reader.simplify.html#var-remove-optional-space">remove-optional-space</a> </li><li> <a href="beowulf.reader.simplify.html#var-simplify">simplify</a> </li><li> <a href="beowulf.reader.simplify.html#var-simplify-tree">simplify-tree</a> </li></ul></div></div></div></body></html> \ No newline at end of file diff --git a/docs/codox/intro.html b/docs/codox/intro.html index 9854ad9..55db19f 100644 --- a/docs/codox/intro.html +++ b/docs/codox/intro.html @@ -1,11 +1,11 @@ <!DOCTYPE html PUBLIC "" ""> -<html><head><meta charset="UTF-8" /><title>beowulf</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Beowulf</span> <span class="project-version">0.3.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 current"><a href="intro.html"><div class="inner"><span>beowulf</span></div></a></li><li class="depth-1 "><a href="mexpr.html"><div class="inner"><span>Interpreting M-Expressions</span></div></a></li><li class="depth-1 "><a href="values.html"><div class="inner"><span>Understanding values and properties</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>beowulf</span></div></div></li><li class="depth-2 branch"><a href="beowulf.bootstrap.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bootstrap</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cons-cell</span></div></a></li><li class="depth-2 branch"><a href="beowulf.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2 branch"><a href="beowulf.gendoc.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>gendoc</span></div></a></li><li class="depth-2 branch"><a href="beowulf.host.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>host</span></div></a></li><li class="depth-2 branch"><a href="beowulf.io.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>io</span></div></a></li><li class="depth-2 branch"><a href="beowulf.manual.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>manual</span></div></a></li><li class="depth-2 branch"><a href="beowulf.oblist.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>oblist</span></div></a></li><li class="depth-2 branch"><a href="beowulf.read.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>read</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>reader</span></div></div></li><li class="depth-3 branch"><a href="beowulf.reader.char-reader.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>char-reader</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.generate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>generate</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.macros.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>macros</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li><li class="depth-3"><a href="beowulf.reader.simplify.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simplify</span></div></a></li></ul></div><div class="document" id="content"><div class="doc"><div class="markdown"><h1><a href="#beowulf" name="beowulf"></a>beowulf</h1> +<html><head><meta charset="UTF-8" /><title>beowulf</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Beowulf</span> <span class="project-version">0.3.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="further_reading.html"><div class="inner"><span>Further Reading</span></div></a></li><li class="depth-1 current"><a href="intro.html"><div class="inner"><span>beowulf</span></div></a></li><li class="depth-1 "><a href="mexpr.html"><div class="inner"><span>Interpreting M-Expressions</span></div></a></li><li class="depth-1 "><a href="values.html"><div class="inner"><span>The properties of the system, and their values: here be dragons</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>beowulf</span></div></div></li><li class="depth-2 branch"><a href="beowulf.bootstrap.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bootstrap</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cons-cell</span></div></a></li><li class="depth-2 branch"><a href="beowulf.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2 branch"><a href="beowulf.gendoc.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>gendoc</span></div></a></li><li class="depth-2 branch"><a href="beowulf.host.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>host</span></div></a></li><li class="depth-2 branch"><a href="beowulf.interop.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>interop</span></div></a></li><li class="depth-2 branch"><a href="beowulf.io.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>io</span></div></a></li><li class="depth-2 branch"><a href="beowulf.manual.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>manual</span></div></a></li><li class="depth-2 branch"><a href="beowulf.oblist.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>oblist</span></div></a></li><li class="depth-2 branch"><a href="beowulf.read.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>read</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>reader</span></div></div></li><li class="depth-3 branch"><a href="beowulf.reader.char-reader.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>char-reader</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.generate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>generate</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.macros.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>macros</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li><li class="depth-3"><a href="beowulf.reader.simplify.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simplify</span></div></a></li></ul></div><div class="document" id="content"><div class="doc"><div class="markdown"><h1><a href="#beowulf" name="beowulf"></a>beowulf</h1> <p>LISP 1.5 is to all Lisp dialects as Beowulf is to English literature.</p> <h2><a href="#what-this-is" name="what-this-is"></a>What this is</h2> <p>A work-in-progress towards an implementation of Lisp 1.5 in Clojure. The objective is to build a complete and accurate implementation of Lisp 1.5 as described in the manual, with, in so far as is possible, exactly the same bahaviour - except as documented below.</p> <h3><a href="#status" name="status"></a>Status</h3> -<p>Boots to REPL, but few functions yet available.</p> +<p>Working Lisp interpreter, but some key features not yet implemented.</p> <ul> <li><a href="https://simon-brooke.github.io/beowulf/">Project website</a>.</li> <li><a href="https://simon-brooke.github.io/beowulf/docs/codox/index.html">Source code documentation</a>.</li> @@ -15,7 +15,7 @@ <pre><code>lein uberjar </code></pre> <p>Invoke with</p> -<pre><code>java -jar target/uberjar/beowulf-0.2.1-SNAPSHOT-standalone.jar --help +<pre><code>java -jar target/uberjar/beowulf-0.3.0-SNAPSHOT-standalone.jar --help </code></pre> <p>(Obviously, check your version number)</p> <p>Command line arguments as follows:</p> diff --git a/docs/codox/mexpr.html b/docs/codox/mexpr.html index c8d104f..cea7607 100644 --- a/docs/codox/mexpr.html +++ b/docs/codox/mexpr.html @@ -1,6 +1,6 @@ <!DOCTYPE html PUBLIC "" ""> -<html><head><meta charset="UTF-8" /><title>Interpreting M-Expressions</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Beowulf</span> <span class="project-version">0.3.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="intro.html"><div class="inner"><span>beowulf</span></div></a></li><li class="depth-1 current"><a href="mexpr.html"><div class="inner"><span>Interpreting M-Expressions</span></div></a></li><li class="depth-1 "><a href="values.html"><div class="inner"><span>Understanding values and properties</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>beowulf</span></div></div></li><li class="depth-2 branch"><a href="beowulf.bootstrap.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bootstrap</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cons-cell</span></div></a></li><li class="depth-2 branch"><a href="beowulf.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2 branch"><a href="beowulf.gendoc.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>gendoc</span></div></a></li><li class="depth-2 branch"><a href="beowulf.host.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>host</span></div></a></li><li class="depth-2 branch"><a href="beowulf.io.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>io</span></div></a></li><li class="depth-2 branch"><a href="beowulf.manual.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>manual</span></div></a></li><li class="depth-2 branch"><a href="beowulf.oblist.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>oblist</span></div></a></li><li class="depth-2 branch"><a href="beowulf.read.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>read</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>reader</span></div></div></li><li class="depth-3 branch"><a href="beowulf.reader.char-reader.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>char-reader</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.generate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>generate</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.macros.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>macros</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li><li class="depth-3"><a href="beowulf.reader.simplify.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simplify</span></div></a></li></ul></div><div class="document" id="content"><div class="doc"><div class="markdown"><h1><a href="#interpreting-m-expressions" name="interpreting-m-expressions"></a>Interpreting M-Expressions</h1> +<html><head><meta charset="UTF-8" /><title>Interpreting M-Expressions</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Beowulf</span> <span class="project-version">0.3.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="further_reading.html"><div class="inner"><span>Further Reading</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>beowulf</span></div></a></li><li class="depth-1 current"><a href="mexpr.html"><div class="inner"><span>Interpreting M-Expressions</span></div></a></li><li class="depth-1 "><a href="values.html"><div class="inner"><span>The properties of the system, and their values: here be dragons</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>beowulf</span></div></div></li><li class="depth-2 branch"><a href="beowulf.bootstrap.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bootstrap</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cons-cell</span></div></a></li><li class="depth-2 branch"><a href="beowulf.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2 branch"><a href="beowulf.gendoc.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>gendoc</span></div></a></li><li class="depth-2 branch"><a href="beowulf.host.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>host</span></div></a></li><li class="depth-2 branch"><a href="beowulf.interop.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>interop</span></div></a></li><li class="depth-2 branch"><a href="beowulf.io.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>io</span></div></a></li><li class="depth-2 branch"><a href="beowulf.manual.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>manual</span></div></a></li><li class="depth-2 branch"><a href="beowulf.oblist.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>oblist</span></div></a></li><li class="depth-2 branch"><a href="beowulf.read.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>read</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>reader</span></div></div></li><li class="depth-3 branch"><a href="beowulf.reader.char-reader.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>char-reader</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.generate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>generate</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.macros.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>macros</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li><li class="depth-3"><a href="beowulf.reader.simplify.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simplify</span></div></a></li></ul></div><div class="document" id="content"><div class="doc"><div class="markdown"><h1><a href="#interpreting-m-expressions" name="interpreting-m-expressions"></a>Interpreting M-Expressions</h1> <p>M-Expressions (‘mexprs’) are the grammar which John McCarthy origininally used to write Lisp, and the grammar in which many of the function definitions in the <a href="https://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf">Lisp 1.5 Programmer’s Manual</a> are stated. However, I have not seen anywhere a claim that Lisp 1.5 could <em>read</em> M-Expressions, and it is not clear to me whether it was even planned that it should do so, although the discussion on <a href="https://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf#page=18">page 10</a> suggests that it was.</p> <p>Rather, it seems to me possible that M-Expressions were only ever a grammar intended to be written on paper, like <a href="https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_form">Backus Naur Form</a>, to describe and to reason about algorithms. I think at the point at which the M-Expression grammar was written, the idea of the <a href="https://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf#page=18">universal Lisp function</a></p> <p>I set out to make Beowulf read M-Expressions essentially out of curiousity, to see whether it could be done. I had this idea that if it could be done, I could implement most of Lisp 1.5 simply by copying in the M-Expression definitions out of the manual.</p> diff --git a/docs/codox/values.html b/docs/codox/values.html index 2dd0ca3..e4d5640 100644 --- a/docs/codox/values.html +++ b/docs/codox/values.html @@ -1,9 +1,9 @@ <!DOCTYPE html PUBLIC "" ""> -<html><head><meta charset="UTF-8" /><title>Understanding values and properties</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Beowulf</span> <span class="project-version">0.3.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="intro.html"><div class="inner"><span>beowulf</span></div></a></li><li class="depth-1 "><a href="mexpr.html"><div class="inner"><span>Interpreting M-Expressions</span></div></a></li><li class="depth-1 current"><a href="values.html"><div class="inner"><span>Understanding values and properties</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>beowulf</span></div></div></li><li class="depth-2 branch"><a href="beowulf.bootstrap.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bootstrap</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cons-cell</span></div></a></li><li class="depth-2 branch"><a href="beowulf.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2 branch"><a href="beowulf.gendoc.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>gendoc</span></div></a></li><li class="depth-2 branch"><a href="beowulf.host.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>host</span></div></a></li><li class="depth-2 branch"><a href="beowulf.io.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>io</span></div></a></li><li class="depth-2 branch"><a href="beowulf.manual.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>manual</span></div></a></li><li class="depth-2 branch"><a href="beowulf.oblist.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>oblist</span></div></a></li><li class="depth-2 branch"><a href="beowulf.read.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>read</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>reader</span></div></div></li><li class="depth-3 branch"><a href="beowulf.reader.char-reader.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>char-reader</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.generate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>generate</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.macros.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>macros</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li><li class="depth-3"><a href="beowulf.reader.simplify.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simplify</span></div></a></li></ul></div><div class="document" id="content"><div class="doc"><div class="markdown"><h1><a href="#understanding-values-and-properties" name="understanding-values-and-properties"></a>Understanding values and properties</h1> -<p>Lisp is the list processing language; that is what it name means. It processes data structures built of lists - which may be lists of lists, or lists of numbers, or lists of any other sort of data item provided for by the designers of the system.</p> +<html><head><meta charset="UTF-8" /><title>The properties of the system, and their values: here be dragons</title><link rel="stylesheet" type="text/css" href="css/default.css" /><link rel="stylesheet" type="text/css" href="css/highlight.css" /><script type="text/javascript" src="js/highlight.min.js"></script><script type="text/javascript" src="js/jquery.min.js"></script><script type="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div id="header"><h2>Generated by <a href="https://github.com/weavejester/codox">Codox</a></h2><h1><a href="index.html"><span class="project-title"><span class="project-name">Beowulf</span> <span class="project-version">0.3.0-SNAPSHOT</span></span></a></h1></div><div class="sidebar primary"><h3 class="no-link"><span class="inner">Project</span></h3><ul class="index-link"><li class="depth-1 "><a href="index.html"><div class="inner">Index</div></a></li></ul><h3 class="no-link"><span class="inner">Topics</span></h3><ul><li class="depth-1 "><a href="further_reading.html"><div class="inner"><span>Further Reading</span></div></a></li><li class="depth-1 "><a href="intro.html"><div class="inner"><span>beowulf</span></div></a></li><li class="depth-1 "><a href="mexpr.html"><div class="inner"><span>Interpreting M-Expressions</span></div></a></li><li class="depth-1 current"><a href="values.html"><div class="inner"><span>The properties of the system, and their values: here be dragons</span></div></a></li></ul><h3 class="no-link"><span class="inner">Namespaces</span></h3><ul><li class="depth-1"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>beowulf</span></div></div></li><li class="depth-2 branch"><a href="beowulf.bootstrap.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>bootstrap</span></div></a></li><li class="depth-2 branch"><a href="beowulf.cons-cell.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>cons-cell</span></div></a></li><li class="depth-2 branch"><a href="beowulf.core.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>core</span></div></a></li><li class="depth-2 branch"><a href="beowulf.gendoc.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>gendoc</span></div></a></li><li class="depth-2 branch"><a href="beowulf.host.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>host</span></div></a></li><li class="depth-2 branch"><a href="beowulf.interop.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>interop</span></div></a></li><li class="depth-2 branch"><a href="beowulf.io.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>io</span></div></a></li><li class="depth-2 branch"><a href="beowulf.manual.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>manual</span></div></a></li><li class="depth-2 branch"><a href="beowulf.oblist.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>oblist</span></div></a></li><li class="depth-2 branch"><a href="beowulf.read.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>read</span></div></a></li><li class="depth-2"><div class="no-link"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>reader</span></div></div></li><li class="depth-3 branch"><a href="beowulf.reader.char-reader.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>char-reader</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.generate.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>generate</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.macros.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>macros</span></div></a></li><li class="depth-3 branch"><a href="beowulf.reader.parser.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>parser</span></div></a></li><li class="depth-3"><a href="beowulf.reader.simplify.html"><div class="inner"><span class="tree"><span class="top"></span><span class="bottom"></span></span><span>simplify</span></div></a></li></ul></div><div class="document" id="content"><div class="doc"><div class="markdown"><h1><a href="#the-properties-of-the-system-and-their-values-here-be-dragons" name="the-properties-of-the-system-and-their-values-here-be-dragons"></a>The properties of the system, and their values: here be dragons</h1> +<p>Lisp is the list processing language; that is what its name means. It processes data structures built of lists - which may be lists of lists, or lists of numbers, or lists of any other sort of data item provided for by the designers of the system.</p> <p>But how is a list, in a computer, actually implemented?</p> -<p>They’re implemented as pairs, or, as the manual sometimes rather delightfully called them, ‘doublets’. Pairs of what? Pairs of pointers. Of the two pointers of a pair, the first points to the current entry of the list, and the second, by default, points to the remainder of the list, or, if the end of the list has been reached, to a special datum known as <code>NIL</code> which among other things indicates that the end of the list has been reached. The pair itself is normally referred to as a ‘cons cell’ for reasons which are nerdy and not important just now (all right, because they are constructed using a function called <code>cons</code>, which is in itself simply and abbreviation of ‘construct’).</p> +<p>They’re implemented as pairs, or, as the manual sometimes rather delightfully called them, ‘doublets’. Pairs of what? Pairs of pointers. Of the two pointers of a pair, the first points to the current entry of the list, and the second, by default, points to the remainder of the list, or, if the end of the list has been reached, to a special datum known as <code>NIL</code> which among other things indicates that the end of the list has been reached. The pair itself is normally referred to as a ‘cons cell’ for reasons which are nerdy and not important just now (all right, because they are constructed using a function called <code>cons</code>, which is in itself believed to be simply an abbreviation of ‘construct’).</p> <p>Two functions are used to access the two pointers of the cell. In modern Lisps these functions are called <code>first</code> and <code>rest</code>, because a lot of people who aren’t greybeards find these names easier. But they aren’t the original names. The original names were <code>CAR</code> and <code>CDR</code>.</p> <p>Why?</p> <h2><a href="#history" name="history"></a>History</h2> @@ -34,6 +34,18 @@ RLN | | oo 7 a | O14 (read lines O and 1) </code></pre> <p>Of course, this isn’t proof. If <code>CAR</code> and <code>CDR</code> used here are standard IBM 704 assembler mnemonics – as I believe they are – then what is <code>CONS</code>? It’s used in a syntactically identical way. If it also is an assembler mnemonic, then it’s hard to believe that, as legend relates, it is short for ‘construct’; on the other hand, if it’s a label representing an entry point into a subroutine, then why should <code>CAR</code> and <code>CDR</code> not also be labels?</p> +<hr /> +<p><strong>Edited 3<sup>rd</sup> April to add:</strong> I’ve found a document, not related to Lisp (although John McCarthy is credited as one of the authors), which does confirm – or strictly, amend – the story. This is the <a href="http://bitsavers.org/pdf/mit/computer_center/Coding_for_the_MIT-IBM_704_Computer_Oct57.pdf">CODING for the MIT-IBM 704 COMPUTER</a>, dating from October 1957. The registers of the 704 were divided into four parts, named respectively the prefix part, the address part, the tag part, and the decrement part, of 3, 15, 3, and 15 bits respectively. The decrement part was not used in addressing; that part of the folklore I was taught isn’t right. But the names are correct. Consider <a href="http://bitsavers.org/pdf/mit/computer_center/Coding_for_the_MIT-IBM_704_Computer_Oct57.pdf#page=145">this excerpt</a> :</p> +<blockquote> + <p>The address, tag and decrement parts of symbolic instructions are given in that order. In some cases the decrement, tag or address parts are not necessary; therefore the following combinations where OP represents the instruction abbreviation are permissible.</p> +</blockquote> +<p>This doesn’t prove there were individual machine instructions with the mnemonics <code>CAR</code> and <code>CDR</code>; in fact, I’m going to say with some confidence that there were not, by reference to <a href="http://bitsavers.org/pdf/mit/computer_center/Coding_for_the_MIT-IBM_704_Computer_Oct57.pdf#page=170">the table of instructions</a> appended to the same document. The instructions do have three letter mnemonics, and they do use ‘A’ and ‘D’ as abbreviations for ‘address’ and ‘decrement’ respectively, but <code>CAR</code> and <code>CDR</code> are not included.</p> +<p>So it seems probable that <code>CAR</code> and <code>CDR</code> were labels for subroutines, as I hypothesised above. But they were quite likely pre-existing subroutines, in use before the instantiation of the Lisp project, because they would be generally useful; and the suggestion that they are contractions of ‘contents of the address part’ and ‘contents of the decrement part’, respectively, seem confirmed.</p> +<p>And, going further down the rabbit hole, <a href="https://dl.acm.org/doi/pdf/10.1145/800055.802047#page=3">there’s this</a>. In 1957, before work on the Lisp project started, McCarthy was writing functions to add list processing to the then-new FORTRAN language, on the very same IBM 704 machine. </p> +<blockquote> + <p>in this time any function that delivered integer values had to have a first letter X. Any function (as opposited to subroutines) had to have a last letter F in its name. Therefore the functions selecting parts of the IBM704 memory register (word) were introduced to be XCSRF, XCPRF, XCDRF, XCTRF and XCARF</p> +</blockquote> +<hr /> <p>I think that the answer has to be that if <code>CAR</code> and <code>CDR</code> had been named by the early Lisp team – John McCarthy and his immediate colleagues – they would not have been named as they were. If not <code>FRST</code> and <code>REST</code>, as in more modern Lisps, then something like <code>P1</code> and <code>P2</code>. <code>CAR</code> and <code>CDR</code> are distinctive and memorable (and therefore in my opinion worth preserving) because they very specifically name the parts of a cons cell and of nothing else.</p> <p>Let’s be clear, here: when <code>CAR</code> and <code>CDR</code> are used in Lisp, they are returning pointers, certainly – but not in the sense that one points to a page and the other to a word. Each is an offset into a cell array, which is almost certainly an array of single 36 bit words held on a single page. So both are in effect being used as decrements. Their use in Lisp is an overload onto their original semantic meaning; they are no longer being used for the purpose for which they are named.</p> <p>As far as I can tell, these names first appear in print in 1960, both in the Lisp 1 Programmer’s Manual referenced above, and in McCarthy’s paper <a href="https://web.archive.org/web/20230328222647/http://www-formal.stanford.edu/jmc/recursive.pdf">Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I</a>. The paper was published in April so was presumably written in 1959</p> @@ -91,7 +103,14 @@ O14 (read lines O and 1) <p>There’s a view in modern software theory – with which I strongly hold – that data should be immutable. Data that changes under you is the source of all sorts of bugs. And in modern multi threaded systems, the act of reading a datum whilst some other process is writing it, or worse, two processes attempting simultaneously to write the same datum, is a source of data corruption and even crashes. So I’m very wary of mutable data; and, in modern systems where we normally have a great deal of space and a lot of processor power, making fresh copies of data structures containing the change we wanted to make is a reasonable price to pay for avoiding a whole class of bugs.</p> <p>But early software was not like that. It was always constrained by the limits of the hardware on which it ran, to a degree that we are not. And the experience that we now have of the problems caused by mutable data, they did not have. So it’s core to the design of Lisp 1.5 that its lists are mutable; and, indeed, one of the biggest challenges in writing Beowulf has been <a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/cons_cell.clj#L19">implementing mutable lists in Clojure</a>, a language carefully designed to prevent them.</p> <p>But, just because Lisp 1.5 lists can be mutable, should they be? And when should they be?</p> -<p>The problem here is that spine of the system I talked about earlier.</p> +<p>The problem here is that <a href="#the_spine">spine of the system</a> I talked about earlier. If we build the execution stack on top of the oblist – as at present I do – then if we make a new version of the oblist with changes in it, the new changes will not be in the copy of the oblist that the stack is built on top of; and consequently, they’ll be invisible to the running program.</p> +<p>What I do at present, and what I think may be good enough, is that each time execution returns to the read-eval-print loop, the REPL, the user’s command line, I rebuild a new execution stack on the top of the oblist as it exists now. So, if the last operation modified the oblist, the next operation will see the new, modified version. But if someone tried to run some persistent program which was writing stuff to property values and hoping to read them back in the same computation, that wouldn’t work, and it would be a very hard bug to trace down.</p> +<p>So my options are:</p> +<ol> + <li>To implement <code>PUT</code> and <code>GET</code> in Clojure, so that they can operate on the current copy of the object list, not the one at the base of the stack. I’m slightly unwilling to do that, because my objective is to make Beowulf ultimately as self-hosting as possible.</li> + <li>To implement <code>PUT</code> and <code>GET</code> in Lisp, and have them destructively modify the working copy of the object list.</li> +</ol> +<p>Neither of these particularly appeal.</p> <h2><a href="#how-property-lists-should-work" name="how-property-lists-should-work"></a>How property lists should work</h2> <p>I’m still not fully understanding how property lists in Lisp 1.5 are supposed to work. </p> <h3><a href="#list-format" name="list-format"></a>List format</h3> @@ -180,5 +199,64 @@ O14 (read lines O and 1) <p>(They wrote amazingly clean code, those old masters. I could tell you a story about Chris Burton, the train, and the printer driver, that software people of today simply would not believe. But it’s true. And I think that what taught them that discipline was the high cost of even small errors.)</p> <p>Lisp 1.5 doesn’t have <code>PUT</code>, <code>PUTPROP</code> or <code>DEFUN</code> because setting properties individually, defining functions individually one at a time, was not something they ever thought about doing. And in learning that, I’ve learned more than I ever expected to about the real nature of Lisp 1.5, and the (great) people who wrote it.</p> <hr /> +<h2><a href="#deeper-delving" name="deeper-delving"></a>Deeper delving</h2> +<p>After writing, and publishing, this essay, I went on procrastinating, which is what I do when I’m sure I’m missing something; and to procrastinate, I went on reading the earliest design documents of Lisp I could find. And so I came across the MIT AI team’s first ever memo, written by John McCarthy in September 1958. And in that, I find this:</p> +<blockquote> + <p>3.2.1. First we have those that extract parts of a 704 word and form a word from parts. We shall distinguish the following parts of a word and indicate each of them by a characteristic letter.</p> + <table> + <thead> + <tr> + <th>Letter </th> + <th>Description </th> + </tr> + </thead> + <tbody> + <tr> + <td>w </td> + <td>the whole word </td> + </tr> + <tr> + <td>p </td> + <td>the prefix (bits s, 1, 2) </td> + </tr> + <tr> + <td>i </td> + <td>the indicator (bits 1 and 2) </td> + </tr> + <tr> + <td>s </td> + <td>the sign bit </td> + </tr> + <tr> + <td>d </td> + <td>the decrement (bits 3-17) </td> + </tr> + <tr> + <td>t </td> + <td>the tag (bits 18-20) </td> + </tr> + <tr> + <td>a </td> + <td>the address (bits 21-35) </td> + </tr> + </tbody> + </table> +</blockquote> +<p>In the discussion of functions which access properties on <a href="https://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf#page=66">page 58 of the Lisp 1.5 programmer’s manual</a>, the word ‘indicator’ is used in preference to ‘symbol’ for the name of a property: for example</p> +<blockquote> + <p>The function <code>deflist</code> is a more general defining function. Its first argument is a list of pairs as for define. Its second argument is the <em>indicator</em> that is to be used. After <code>deflist</code> has been executed with (u<sub>i</sub> v<sub>i</sub>) among its first argument, the property list of u<sub>i</sub> will begin:</p> + <p>If <code>deflist</code> or <code>define</code> is used twice on the same object with the same <em>indicator</em>, the old value will be replaced by the new one.</p> +</blockquote> +<p>(my emphasis).</p> +<p>That use of ‘indicator’ has been nagging at me for a week. It looks like a term of art. If it’s just an ordinary atomic symbol, why isn’t it called a symbol?</p> +<p>Is it an indicator in the special sense of the indicator part of the machine word? If it were, then the property list could just be a flat list of values. And what’s been worrying and surprising me is that property lists are shown in the manual as flat lists. Eureka? I don’t <em>think</em> so.</p> +<p>The reason I don’t think so is that there are only two bits in the indicator part of the word, so only four distinct values; whereas we know that Lisp 1.5 has (at least) five distinct indicator values, <code>APVAL</code>, <code>EXPR</code>, <code>FEXPR</code>, <code>SUBR</code> and <code>FSUBR</code>.</p> +<p>Furthermore, on <a href="https://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf#page=47">page 39</a>, we have:</p> +<blockquote> + <p>A property list is characterized by having the special constant 77777<sub>8</sub> (i. e., minus 1) as the first element of the list. The rest of the list contains various properties of the atomic symbol. Each property is preceded by an <em>atomic symbol</em> which is called its <em>indicator</em>.</p> +</blockquote> +<p>(again, my emphasis)</p> +<p>But I’m going to hypothesise that the properties were originally intended to be discriminated by the indicator bits in the cons cell, that they were originally coded that way, and that there was some code which depended on property lists being flat lists; and that, when it was discovered that four indicators were not enough and that something else was going to have to be used, the new format of the property list using atomic symbols as indicators was bodged in.</p> +<hr /> <p>So what this is about is I’ve spent most of a whole day procrastinating, because I’m not exactly sure how I’m going to make the change I’ve got to make. Versions of Beowulf up to and including 0.2.1 used the naive understanding of the architecture; version 0.3.0 <em>should</em> use the corrected version. But before it can, I need to be reasonably confident that I understand what the correct solution is.</p> -<p>I <em>shall</em> implement <code>PUT</code>, even though it isn’t in the spec, because it’s a useful building block on which to build <code>DEFINE</code> and <code>DEFLIS</code>, both of which are. And also, because <code>PUT</code> would have been very easy for the Lisp 1.5 implementers to implement, if it had been relevant to their working environment.</p></div></div></div></body></html> \ No newline at end of file +<p>I <em>shall</em> implement <code>PUT</code>, even though it isn’t in the spec, because it’s a useful building block on which to build <code>DEFINE</code> and <code>DEFLIS</code>, both of which are. And also, because <code>PUT</code> would have been very easy for the Lisp 1.5 implementers to implement, if it had been relevant to their working environment. And I shall implement property list as flat lists of interleaved ‘indicator’ symbols and values, even with that nonsense 77777<sub>8</sub> as a prefix, because now I know (or think I know) that it was a bodge, it seems right in the spirit of historical reconstruction to reconstruct the bodge.</p></div></div></div></body></html> \ No newline at end of file diff --git a/project.clj b/project.clj index 0989300..c989d36 100644 --- a/project.clj +++ b/project.clj @@ -34,6 +34,5 @@ ["uberjar"] ["change" "version" "leiningen.release/bump-version"] ["vcs" "commit"]] - :target-path "target/%s" :url "https://github.com/simon-brooke/the-great-game") diff --git a/src/beowulf/bootstrap.clj b/src/beowulf/bootstrap.clj index 09b4ee2..b1ea963 100644 --- a/src/beowulf/bootstrap.clj +++ b/src/beowulf/bootstrap.clj @@ -9,7 +9,8 @@ ALLUPPERCASE are Lisp 1.5 functions (although written in Clojure) and that therefore all arguments must be numbers, symbols or `beowulf.cons_cell.ConsCell` objects." - (:require [beowulf.cons-cell :refer [make-beowulf-list make-cons-cell T]] + (:require [beowulf.cons-cell :refer [F make-beowulf-list make-cons-cell + pretty-print T]] [beowulf.host :refer [ASSOC ATOM CAAR CADAR CADDR CADR CAR CDR GET LIST NUMBERP PAIRLIS traced?]] [beowulf.oblist :refer [*options* NIL oblist]]) @@ -36,7 +37,147 @@ ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(declare APPLY EVAL) +(declare APPLY EVAL prog-eval) + +(def find-target + (memoize + (fn [target body] + (loop [body' body] + (cond + (= body' NIL) (throw (ex-info "Invalid GO target" + {:phase :lisp + :function 'PROG + :type :lisp + :code :A6})) + (= (.getCar body') target) body' + :else (recur (.getCdr body'))))))) + +(defn- prog-cond + "Like `EVCON`, q.v. except using `prog-eval` instead of `EVAL` and not + throwing an error if no clause matches." + [clauses vars env depth] + (loop [clauses' clauses] + (if-not (= clauses' NIL) + (let [test (prog-eval (CAAR clauses') vars env depth)] + (if (not (#{NIL F} test)) + (prog-eval (CADAR clauses') vars env depth) + (recur (.getCdr clauses')))) + NIL))) + +(defn prog-eval + "Like `EVAL`, q.v., except handling symbols, and expressions starting + `GO`, `RETURN`, `SET` and `SETQ` specially." + [expr vars env depth] + (cond + (number? expr) expr + (symbol? expr) (@vars expr) + (instance? ConsCell expr) (case (.getCar expr) + COND (prog-cond (.getCdr expr) + vars env depth) + GO (make-cons-cell + '*PROGGO* (.getCdr expr)) + RETURN (make-cons-cell + '*PROGRETURN* + (EVAL (.getCdr expr) env depth)) + SET (swap! vars + assoc + (prog-eval (CADR expr) + vars env depth) + (prog-eval (CADDR expr) + vars env depth)) + SETQ (swap! vars + assoc + (CADR expr) + (prog-eval (CADDR expr) + vars env depth)) + ;; else + (beowulf.bootstrap/EVAL expr env depth)))) + +(defn PROG + "The accursed `PROG` feature. See page 71 of the manual. + + Lisp 1.5 introduced `PROG`, and most Lisps have been stuck with it ever + since. It introduces imperative programming into what should be a pure + functional language, and consequently it's going to be a pig to implement. + + Broadly, `PROG` is a variadic pseudo function called as a `FEXPR` (or + possibly an `FSUBR`, although I'm not presently sure that would even work.) + + The arguments, which are unevaluated, are a list of forms, the first of + which is expected to be a list of symbols which will be treated as names + of variables within the program, and the rest of which (the 'program body') + are either lists or symbols. Lists are treated as Lisp expressions which + may be evaulated in turn. Symbols are treated as targets for the `GO` + statement. + + **GO:** + A `GO` statement takes the form of `(GO target)`, where + `target` should be one of the symbols which occur at top level among that + particular invocation of `PROG`s arguments. A `GO` statement may occur at + top level in a PROG, or in a clause of a `COND` statement in a `PROG`, but + not in a function called from the `PROG` statement. When a `GO` statement + is evaluated, execution should transfer immediately to the expression which + is the argument list immediately following the symbol which is its target. + + If the target is not found, an error with the code `A6` should be thrown. + + **RETURN:** + A `RETURN` statement takes the form `(RETURN value)`, where + `value` is any value. Following the evaluation of a `RETURN` statement, + the `PROG` should immediately exit without executing any further + expressions, returning the value. + + **SET and SETQ:** + In addition to the above, if a `SET` or `SETQ` expression is encountered + in any expression within the `PROG` body, it should affect not the global + object list but instead only the local variables of the program. + + **COND:** + In **strict** mode, when in normal execution, a `COND` statement none of + whose clauses match should not return `NIL` but should throw an error with + the code `A3`... *except* that inside a `PROG` body, it should not do so. + *sigh*. + + **Flow of control:** + Apart from the exceptions specified above, expressions in the program body + are evaluated sequentially. If execution reaches the end of the program + body, `NIL` is returned. + + Got all that? + + Good." + [program env depth] + (let [trace (traced? 'PROG) + vars (atom (reduce merge (map #(assoc {} % NIL) (.getCar program)))) + body (.getCdr program) + targets (set (filter symbol? body))] + (when trace (do + (println "Program:") + (pretty-print program))) ;; for debugging + (loop [cursor body] + (let [step (.getCar cursor)] + (when trace (do (println "Executing step: " step) + (println " with vars: " vars))) + (cond (= cursor NIL) NIL + (symbol? step) (recur step) + :else (let [v (prog-eval (.getCar cursor) vars env depth)] + (if (instance? ConsCell v) + (case (.getCar v) + *PROGGO* (let [target (.getCdr v)] + (if (targets target) + (recur (find-target target body)) + (throw (ex-info "Invalid GO target" + {:phase :lisp + :function 'PROG + :args program + :type :lisp + :code :A6})))) + *PROGRETURN* (.getCdr v) + ;; else + (recur (.getCdr cursor))) + (recur (.getCdr cursor))))))))) + + (defn try-resolve-subroutine "Attempt to resolve this `subr` with these `arg`." @@ -143,15 +284,26 @@ (defn- EVCON "Inner guts of primitive COND. All `clauses` are assumed to be `beowulf.cons-cell/ConsCell` objects. Note that tests in Lisp 1.5 - often return `F`, not `NIL`, on failure. + often return `F`, not `NIL`, on failure. If no clause matches, + then, strictly, we throw an error with code `:A3`. - See page 13 of the Lisp 1.5 Programmers Manual." + See pages 13 and 71 of the Lisp 1.5 Programmers Manual." [clauses env depth] - (let [test (EVAL (CAAR clauses) env depth)] - (if - (and (not= test NIL) (not= test 'F)) - (EVAL (CADAR clauses) env depth) - (EVCON (CDR clauses) env depth)))) + (loop [clauses' clauses] + (if-not (= clauses' NIL) + (let [test (EVAL (CAAR clauses') env depth)] + (if (not (#{NIL F} test)) + ;; (and (not= test NIL) (not= test F)) + (EVAL (CADAR clauses') env depth) + (recur (.getCdr clauses')))) + (if (:strict *options*) + (throw (ex-info "No matching clause in COND" + {:phase :eval + :function 'COND + :args (list clauses) + :type :lisp + :code :A3})) + NIL)))) (defn- EVLIS "Map `EVAL` across this list of `args` in the context of this @@ -214,9 +366,10 @@ :expr expr})) (symbol expr)) (= (ATOM (CAR expr)) T) (case (CAR expr) - QUOTE (CADR expr) - FUNCTION (LIST 'FUNARG (CADR expr)) COND (EVCON (CDR expr) env depth) + FUNCTION (LIST 'FUNARG (CADR expr)) + PROG (PROG (CDR expr) env depth) + QUOTE (CADR expr) ;; else (APPLY (CAR expr)