beowulf/docs/codox/beowulf.bootstrap.html

21 lines
36 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!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.2.1-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>Introduction to beowulf</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.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.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.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-APPEND"><div class="inner"><span>APPEND</span></div></a></li><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-apply-internal"><div class="inner"><span>apply-internal</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-ASSOC"><div class="inner"><span>ASSOC</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-ATOM"><div class="inner"><span>ATOM</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-ATOM.3F"><div class="inner"><span>ATOM?</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-DEFINE"><div class="inner"><span>DEFINE</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-EQ"><div class="inner"><span>EQ</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-EQUAL"><div class="inner"><span>EQUAL</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-MEMBER"><div class="inner"><span>MEMBER</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-NILP"><div class="inner"><span>NILP</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-NULL"><div class="inner"><span>NULL</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-OBLIST"><div class="inner"><span>OBLIST</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-PAIRLIS"><div class="inner"><span>PAIRLIS</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-SET"><div class="inner"><span>SET</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-SUBLIS"><div class="inner"><span>SUBLIS</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-SUBST"><div class="inner"><span>SUBST</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-traced-apply"><div class="inner"><span>traced-apply</span></div></a></li><li class="depth-1"><a href="beowulf.bootstrap.html#var-traced-eval"><div class="inner"><span>traced-eval</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>
<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-APPEND"><h3>APPEND</h3><div class="usage"><code>(APPEND x y)</code></div><div class="doc"><div class="markdown"><p>Append the the elements of <code>y</code> to the elements of <code>x</code>.</p>
<p>All args are assumed to be <code>beowulf.cons-cell/ConsCell</code> objects. See page 11 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#L147">view source</a></div></div><div class="public anchor" id="var-APPLY"><h3>APPLY</h3><div class="usage"><code>(APPLY function args)</code><code>(APPLY function args environment)</code></div><div class="doc"><div class="markdown"><p>Despatcher for APPLY, selects beteen <code>traced-apply</code> and <code>apply-internal</code> based on the value of <code>:trace</code> in <code>*options*</code>. Apply this <code>function</code> to these <code>arguments</code> and return the result. If <code>environment</code> is not passed, if defaults to the current value of the global object list.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L461">view source</a></div></div><div class="public anchor" id="var-apply-internal"><h3>apply-internal</h3><div class="usage"><code>(apply-internal function args environment)</code></div><div class="doc"><div class="markdown"><p>Internal guts of both <code>APPLY</code> and <code>traced-apply</code>. 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#L427">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></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L195">view source</a></div></div><div class="public anchor" id="var-ATOM"><h3>ATOM</h3><h4 class="type">macro</h4><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>. Im 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/bootstrap.clj#L46">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/bootstrap.clj#L53">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#L98">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#L106">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#L89">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#L99">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#L107">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#L90">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#L84">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#L100">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#L108">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#L91">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#L101">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#L109">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#L92">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#L85">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#L104">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#L112">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#L95">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#L105">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#L113">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#L96">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#L87">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#L102">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#L110">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#L93">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#L103">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#L111">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#L94">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#L86">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 nconced 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/bootstrap.clj#L354">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/bootstrap.clj#L115">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/bootstrap.clj#L124">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)</code></div><div class="doc"><div class="markdown"><p>Despatcher for EVAL, selects beteen <code>traced-eval</code> and <code>eval-internal</code> based on the value of <code>:trace</code> in <code>*options*</code>. Evaluate this <code>expr</code> and return the result. If <code>environment</code> is not passed, if defaults to the current value of the global object list. All args are assumed to be 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#L556">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 youre 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#L278">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#L237">view source</a></div></div><div class="public anchor" id="var-MEMBER"><h3>MEMBER</h3><div class="usage"><code>(MEMBER x y)</code></div><div class="doc"><div class="markdown"><p>This predicate is true if the S-expression <code>x</code> occurs among the elements of the list <code>y</code>.</p>
<p>All args are assumed to be symbols or <code>beowulf.cons-cell/ConsCell</code> objects. See page 11 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#L158">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/bootstrap.clj#L41">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/bootstrap.clj#L36">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>Not certain whether or not this is part of LISP 1.5; adapted from PSL. return the current value of the object list. Note that in PSL this function returns a list of the symbols bound, not the whole association list.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L345">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></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L170">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#L190">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/bootstrap.clj#L374">view source</a></div></div><div class="public anchor" id="var-SUBLIS"><h3>SUBLIS</h3><div class="usage"><code>(SUBLIS a y)</code></div><div class="doc"><div class="markdown"><p>Here <code>a</code> is assumed to be an association list of the form <code>((ul . vl)...(un . vn))</code>, where the <code>u</code>s are atomic, and <code>y</code> is any S-expression. What <code>SUBLIS</code> does, is to treat the <code>u</code>s as variables when they occur in <code>y</code>, and to SUBSTitute the corresponding <code>v</code>s from the pair list.</p>
<p>My interpretation is that this is variable binding in the stack frame.</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></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L220">view source</a></div></div><div class="public anchor" id="var-SUBST"><h3>SUBST</h3><div class="usage"><code>(SUBST x y z)</code></div><div class="doc"><div class="markdown"><p>This function gives the result of substituting the S-expression <code>x</code> for all occurrences of the atomic symbol <code>y</code> in the S-expression <code>z</code>.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L137">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#L256">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#L266">view source</a></div></div><div class="public anchor" id="var-traced-apply"><h3>traced-apply</h3><div class="usage"><code>(traced-apply &amp; args__3196__auto__)</code></div><div class="doc"><div class="markdown"><p>Traced wrapper for <code>internal-apply</code>, q.v. Apply this <code>function</code> to these <code>arguments</code> in this <code>environment</code> and return the result.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L455">view source</a></div></div><div class="public anchor" id="var-traced-eval"><h3>traced-eval</h3><div class="usage"><code>(traced-eval &amp; args__3196__auto__)</code></div><div class="doc"><div class="markdown"><p>Essentially, identical to EVAL except traced.</p></div></div><div class="src-link"><a href="https://github.com/simon-brooke/beowulf/blob/master/src/beowulf/bootstrap.clj#L540">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#L60">view source</a></div></div></div></body></html>