wisp
 
(Arne Babenhauserheide)
2014-12-23: add separate export of the testsuite.

add separate export of the testsuite.

diff --git a/docs/srfi-testsuite.html b/docs/srfi-testsuite.html
new file mode 100644
--- /dev/null
+++ b/docs/srfi-testsuite.html
@@ -0,0 +1,957 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+<head>
+<title>Test Suite</title>
+<!-- 2014-12-23 Di 22:50 -->
+<meta  http-equiv="Content-Type" content="text/html;charset=utf-8" />
+<meta  name="generator" content="Org-mode" />
+<meta  name="author" content="Arne Babenhauserheide" />
+<style type="text/css">
+ <!--/*--><![CDATA[/*><!--*/
+  .title  { text-align: center; }
+  .todo   { font-family: monospace; color: red; }
+  .done   { color: green; }
+  .tag    { background-color: #eee; font-family: monospace;
+            padding: 2px; font-size: 80%; font-weight: normal; }
+  .timestamp { color: #bebebe; }
+  .timestamp-kwd { color: #5f9ea0; }
+  .right  { margin-left: auto; margin-right: 0px;  text-align: right; }
+  .left   { margin-left: 0px;  margin-right: auto; text-align: left; }
+  .center { margin-left: auto; margin-right: auto; text-align: center; }
+  .underline { text-decoration: underline; }
+  #postamble p, #preamble p { font-size: 90%; margin: .2em; }
+  p.verse { margin-left: 3%; }
+  pre {
+    border: 1px solid #ccc;
+    box-shadow: 3px 3px 3px #eee;
+    padding: 8pt;
+    font-family: monospace;
+    overflow: auto;
+    margin: 1.2em;
+  }
+  pre.src {
+    position: relative;
+    overflow: visible;
+    padding-top: 1.2em;
+  }
+  pre.src:before {
+    display: none;
+    position: absolute;
+    background-color: white;
+    top: -10px;
+    right: 10px;
+    padding: 3px;
+    border: 1px solid black;
+  }
+  pre.src:hover:before { display: inline;}
+  pre.src-sh:before    { content: 'sh'; }
+  pre.src-bash:before  { content: 'sh'; }
+  pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
+  pre.src-R:before     { content: 'R'; }
+  pre.src-perl:before  { content: 'Perl'; }
+  pre.src-java:before  { content: 'Java'; }
+  pre.src-sql:before   { content: 'SQL'; }
+
+  table { border-collapse:collapse; }
+  caption.t-above { caption-side: top; }
+  caption.t-bottom { caption-side: bottom; }
+  td, th { vertical-align:top;  }
+  th.right  { text-align: center;  }
+  th.left   { text-align: center;   }
+  th.center { text-align: center; }
+  td.right  { text-align: right;  }
+  td.left   { text-align: left;   }
+  td.center { text-align: center; }
+  dt { font-weight: bold; }
+  .footpara:nth-child(2) { display: inline; }
+  .footpara { display: block; }
+  .footdef  { margin-bottom: 1em; }
+  .figure { padding: 1em; }
+  .figure p { text-align: center; }
+  .inlinetask {
+    padding: 10px;
+    border: 2px solid gray;
+    margin: 10px;
+    background: #ffffcc;
+  }
+  #org-div-home-and-up
+   { text-align: right; font-size: 70%; white-space: nowrap; }
+  textarea { overflow-x: auto; }
+  .linenr { font-size: smaller }
+  .code-highlighted { background-color: #ffff00; }
+  .org-info-js_info-navigation { border-style: none; }
+  #org-info-js_console-label
+    { font-size: 10px; font-weight: bold; white-space: nowrap; }
+  .org-info-js_search-highlight
+    { background-color: #ffff00; color: #000000; font-weight: bold; }
+  /*]]>*/-->
+</style>
+<script type="text/javascript">
+/*
+@licstart  The following is the entire license notice for the
+JavaScript code in this tag.
+
+Copyright (C) 2012-2013 Free Software Foundation, Inc.
+
+The JavaScript code in this tag is free software: you can
+redistribute it and/or modify it under the terms of the GNU
+General Public License (GNU GPL) as published by the Free Software
+Foundation, either version 3 of the License, or (at your option)
+any later version.  The code is distributed WITHOUT ANY WARRANTY;
+without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE.  See the GNU GPL for more details.
+
+As additional permission under GNU GPL version 3 section 7, you
+may distribute non-source (e.g., minimized or compacted) forms of
+that code without the copy of the GNU GPL normally required by
+section 4, provided you include this license notice and a URL
+through which recipients can access the Corresponding Source.
+
+
+@licend  The above is the entire license notice
+for the JavaScript code in this tag.
+*/
+<!--/*--><![CDATA[/*><!--*/
+ function CodeHighlightOn(elem, id)
+ {
+   var target = document.getElementById(id);
+   if(null != target) {
+     elem.cacheClassElem = elem.className;
+     elem.cacheClassTarget = target.className;
+     target.className = "code-highlighted";
+     elem.className   = "code-highlighted";
+   }
+ }
+ function CodeHighlightOff(elem, id)
+ {
+   var target = document.getElementById(id);
+   if(elem.cacheClassElem)
+     elem.className = elem.cacheClassElem;
+   if(elem.cacheClassTarget)
+     target.className = elem.cacheClassTarget;
+ }
+/*]]>*///-->
+</script>
+</head>
+<body>
+<div id="content">
+<h1 class="title">Test Suite</h1>
+<p>
+The wisp test-suite consists of a large number of wisp-snippets and the corresponding scheme-code. 
+</p>
+
+<p>
+A wisp-implementation may call itself compliant with the wisp test-suite if the code tree parsed from the wisp file is the same as a code tree parsed from the equivalent Scheme file.
+</p>
+
+<p>
+A wisp-implementation may call itself a compliant wisp pre-processor if it successfully converts each wisp-snippet into the corresponging scheme-snippet. Blank lines at the end of the file and non-functional white-space in the produced scheme-file do not matter for this purpose.
+</p>
+
+<p>
+This test-suite is also available in the <a href="http://draketo.de/proj/wisp">wisp repository</a> along with a script-runner (runtests.sh) which tests the reference wisp-implementation with GNU Guile against this testsuite.<sup><a id="fnr.1" name="fnr.1" class="footref" href="#fn.1">1</a></sup>
+</p>
+
+<div id="outline-container-sec-1" class="outline-2">
+<h2 id="sec-1"><span class="section-number-2">1</span> tests/syntax-underscore.w</h2>
+<div class="outline-text-2" id="text-1">
+<div class="org-src-container">
+
+<pre class="src src-wisp"><span style="color: #483d8b;">define</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">a</span> b c
+<span style="color: #0000ff;">_ d</span> e
+<span style="color: #0000ff;">___ f</span>
+<span style="color: #0000ff;">___</span> g h
+<span style="color: #0000ff;">__</span><span style="color: #a020f0;">  . </span>i
+
+<span style="color: #483d8b;">define</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">_</span>
+<span style="color: #0000ff;">_  display</span> <span style="color: #8b2252;">"hello\n"</span>
+
+<span style="color: #0000ff;">\_</span>
+</pre>
+</div>
+</div>
+</div>
+<div id="outline-container-sec-2" class="outline-2">
+<h2 id="sec-2"><span class="section-number-2">2</span> tests/syntax-underscore.scm</h2>
+<div class="outline-text-2" id="text-2">
+<div class="org-src-container">
+
+<pre class="src src-scheme">(<span style="color: #a020f0;">define</span> (<span style="color: #0000ff;">a</span> b c)
+  (d e
+    (f)
+    (g h)
+    i))
+
+(<span style="color: #a020f0;">define</span> (<span style="color: #0000ff;">_</span>)
+   (display <span style="color: #8b2252;">"hello\n"</span>))
+
+(_)
+</pre>
+</div>
+</div>
+</div>
+<div id="outline-container-sec-3" class="outline-2">
+<h2 id="sec-3"><span class="section-number-2">3</span> tests/syntax-strings-parens.w</h2>
+<div class="outline-text-2" id="text-3">
+<div class="org-src-container">
+
+<pre class="src src-wisp"><span style="color: #b22222;">; </span><span style="color: #b22222;">Test linebreaks in strings and brackets</span>
+
+<span style="color: #a020f0;">. </span><span style="color: #8b2252;">"flubbub</span>
+
+<span style="color: #8b2252;">flabbab"</span>
+
+hrug (<span style="color: #0000ff;">nadda</span>
+<span style="color: #0000ff;">madda</span> gadda <span style="color: #8b2252;">"shoktom</span>
+<span style="color: #8b2252;"> mee"</span>  <span style="color: #8b2252;">" sep  </span>
+<span style="color: #8b2252;">ka"</span>
+<span style="color: #0000ff;">  hadda)</span>
+<span style="color: #0000ff;">    gom</span>
+
+<span style="color: #0000ff;">flu</span>
+
+<span style="color: #0000ff;">sum</span> [foo
+<span style="color: #0000ff;">bar]</span> barz {1 + [* <span style="color: #008b8b;">2</span> <span style="color: #008b8b;">2</span>]}
+
+<span style="color: #0000ff;">mara</span> {
+<span style="color: #0000ff;">li</span>
+<span style="color: #0000ff;">+</span>
+<span style="color: #0000ff;">lo</span> - (<span style="color: #0000ff;">mabba</span>)
+<span style="color: #0000ff;">}</span>
+</pre>
+</div>
+</div>
+</div>
+<div id="outline-container-sec-4" class="outline-2">
+<h2 id="sec-4"><span class="section-number-2">4</span> tests/syntax-strings-parens.scm</h2>
+<div class="outline-text-2" id="text-4">
+<div class="org-src-container">
+
+<pre class="src src-scheme"><span style="color: #b22222;">; </span><span style="color: #b22222;">Test linebreaks in strings and brackets</span>
+
+<span style="color: #8b2252;">"flubbub</span>
+
+<span style="color: #8b2252;">flabbab"</span>
+
+(hrug (nadda
+madda gadda <span style="color: #8b2252;">"shoktom</span>
+<span style="color: #8b2252;"> mee"</span>  <span style="color: #8b2252;">" sep  </span>
+<span style="color: #8b2252;">ka"</span>
+  hadda)
+    (gom))
+
+(flu)
+
+(sum [foo
+bar] barz {1 + [* 2 2]})
+
+(mara {
+li
++
+lo - (mabba)
+})
+</pre>
+</div>
+</div>
+</div>
+<div id="outline-container-sec-5" class="outline-2">
+<h2 id="sec-5"><span class="section-number-2">5</span> tests/syntax-indent.w</h2>
+<div class="outline-text-2" id="text-5">
+<div class="org-src-container">
+
+<pre class="src src-wisp"><span style="color: #483d8b;">define</span> 
+<span style="color: #0000ff;">  hello</span> who
+<span style="color: #0000ff;">  format</span> <span style="color: #008b8b;">#t</span> <span style="color: #8b2252;">"Hello ~A\n"</span> who
+
+<span style="color: #483d8b;">define</span>
+    <span style="color: #483d8b;">let</span>
+<span style="color: #a020f0;">      :</span>
+<span style="color: #0000ff;">        a</span> <span style="color: #008b8b;">1</span>
+<span style="color: #0000ff;">        b</span> <span style="color: #008b8b;">2</span>
+<span style="color: #0000ff;">        c</span> <span style="color: #008b8b;">3</span>
+<span style="color: #0000ff;">      format</span> <span style="color: #008b8b;">#t</span> <span style="color: #8b2252;">"a: ~A, b: ~A, c: ~A"</span>
+<span style="color: #0000ff;">                   +</span> a <span style="color: #008b8b;">2</span>
+<span style="color: #a020f0;">                   . </span>       b      c
+</pre>
+</div>
+</div>
+</div>
+<div id="outline-container-sec-6" class="outline-2">
+<h2 id="sec-6"><span class="section-number-2">6</span> tests/syntax-indent.scm</h2>
+<div class="outline-text-2" id="text-6">
+<div class="org-src-container">
+
+<pre class="src src-scheme">(<span style="color: #a020f0;">define</span> 
+  (hello who)
+  (format #t <span style="color: #8b2252;">"Hello ~A\n"</span> who))
+
+(<span style="color: #a020f0;">define</span>
+    (<span style="color: #a020f0;">let</span>
+      (
+        (a 1)
+        (b 2)
+        (c 3))
+      (format #t <span style="color: #8b2252;">"a: ~A, b: ~A, c: ~A"</span>
+                   (+ a 2)
+                          b      c)))
+</pre>
+</div>
+</div>
+</div>
+<div id="outline-container-sec-7" class="outline-2">
+<h2 id="sec-7"><span class="section-number-2">7</span> tests/syntax-empty.w</h2>
+<div class="outline-text-2" id="text-7">
+<div class="org-src-container">
+
+<pre class="src src-wisp"></pre>
+</div>
+</div>
+</div>
+<div id="outline-container-sec-8" class="outline-2">
+<h2 id="sec-8"><span class="section-number-2">8</span> tests/syntax-empty.scm</h2>
+<div class="outline-text-2" id="text-8">
+<div class="org-src-container">
+
+<pre class="src src-scheme"></pre>
+</div>
+</div>
+</div>
+<div id="outline-container-sec-9" class="outline-2">
+<h2 id="sec-9"><span class="section-number-2">9</span> tests/syntax-dot.w</h2>
+<div class="outline-text-2" id="text-9">
+<div class="org-src-container">
+
+<pre class="src src-wisp"><span style="color: #483d8b;">define</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">foo</span>
+<span style="color: #a020f0;">  . </span><span style="color: #8b2252;">"bar"</span>
+
+<span style="color: #483d8b;">define</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">bar</span>
+<span style="color: #0000ff;">  '</span> <span style="color: #008b8b;">1</span>
+<span style="color: #a020f0;">    . . </span><span style="color: #008b8b;">2</span> <span style="color: #b22222;">; </span><span style="color: #b22222;">pair</span>
+
+<span style="color: #0000ff;">display</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">foo</span>
+<span style="color: #0000ff;">newline</span>
+<span style="color: #0000ff;">display</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">bar</span>
+<span style="color: #0000ff;">newline</span>
+</pre>
+</div>
+</div>
+</div>
+<div id="outline-container-sec-10" class="outline-2">
+<h2 id="sec-10"><span class="section-number-2">10</span> tests/syntax-dot.scm</h2>
+<div class="outline-text-2" id="text-10">
+<div class="org-src-container">
+
+<pre class="src src-scheme">(<span style="color: #a020f0;">define</span> (<span style="color: #0000ff;">foo</span>)
+  <span style="color: #8b2252;">"bar"</span>)
+
+(<span style="color: #a020f0;">define</span> (<span style="color: #0000ff;">bar</span>)
+  '(1
+    . 2 ))<span style="color: #b22222;">; </span><span style="color: #b22222;">pair</span>
+
+(display (foo))
+(newline)
+(display (bar))
+(newline)
+</pre>
+</div>
+</div>
+</div>
+<div id="outline-container-sec-11" class="outline-2">
+<h2 id="sec-11"><span class="section-number-2">11</span> tests/syntax-colon.w</h2>
+<div class="outline-text-2" id="text-11">
+<div class="org-src-container">
+
+<pre class="src src-wisp"><span style="color: #483d8b;">let</span>
+<span style="color: #a020f0;">  :</span>
+<span style="color: #0000ff;">    a</span> <span style="color: #008b8b;">1</span>
+<span style="color: #0000ff;">    b</span> <span style="color: #008b8b;">2</span>
+  <span style="color: #483d8b;">let</span>
+<span style="color: #a020f0;">    :</span>
+<span style="color: #a020f0;">      :</span>
+<span style="color: #a020f0;">        . </span>c <span style="color: #008b8b;">3</span>
+<span style="color: #0000ff;">    format</span> <span style="color: #008b8b;">#t</span> <span style="color: #8b2252;">"a: ~A, b: ~A, c: ~A"</span>
+<span style="color: #a020f0;">              . </span>   a      b      c
+
+<span style="color: #a020f0;">: </span>a
+
+<span style="color: #483d8b;">define</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">hello</span>
+<span style="color: #0000ff;">  display</span> <span style="color: #8b2252;">"hello\n"</span>
+
+<span style="color: #483d8b;">let</span>
+<span style="color: #a020f0;">  : </span><span style="color: #0000ff;">a</span> <span style="color: #008b8b;">1</span>
+<span style="color: #0000ff;">    b</span> <span style="color: #008b8b;">2</span>
+<span style="color: #0000ff;">  format</span> <span style="color: #008b8b;">#t</span> <span style="color: #8b2252;">"a: ~A, b: ~A"</span>
+<span style="color: #a020f0;">            . </span>   a      b
+
+<span style="color: #483d8b;">let</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">:</span> a ' :
+
+<span style="color: #483d8b;">let</span> 
+<span style="color: #a020f0;">  : </span>   <span style="color: #b22222;">; </span><span style="color: #b22222;">foo</span>
+<span style="color: #0000ff;">    a</span>
+      '
+
+<span style="color: #a020f0;">:</span>
+  a
+
+<span style="color: #483d8b;">define</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">\:</span>
+<span style="color: #0000ff;">  hello</span>
+
+<span style="color: #0000ff;">\:</span>
+</pre>
+</div>
+</div>
+</div>
+<div id="outline-container-sec-12" class="outline-2">
+<h2 id="sec-12"><span class="section-number-2">12</span> tests/syntax-colon.scm</h2>
+<div class="outline-text-2" id="text-12">
+<div class="org-src-container">
+
+<pre class="src src-scheme">(<span style="color: #a020f0;">let</span>
+  (
+    (a 1)
+    (b 2))
+  (<span style="color: #a020f0;">let</span>
+    (
+      (
+        c 3))
+    (format #t <span style="color: #8b2252;">"a: ~A, b: ~A, c: ~A"</span>
+                 a      b      c)))
+
+((a))
+
+(<span style="color: #a020f0;">define</span> (<span style="color: #0000ff;">hello</span>)
+  (display <span style="color: #8b2252;">"hello\n"</span>))
+
+(<span style="color: #a020f0;">let</span>
+  ((a 1)
+    (b 2))
+  (format #t <span style="color: #8b2252;">"a: ~A, b: ~A"</span>
+               a      b))
+
+(<span style="color: #a020f0;">let</span> ((a '())))
+
+(<span style="color: #a020f0;">let</span> 
+  (    <span style="color: #b22222;">; </span><span style="color: #b22222;">foo</span>
+    (a
+      '())))
+
+(
+  (a))
+
+(<span style="color: #a020f0;">define</span> (<span style="color: #0000ff;">:</span>)
+  (hello))
+
+(:)
+</pre>
+</div>
+</div>
+</div>
+<div id="outline-container-sec-13" class="outline-2">
+<h2 id="sec-13"><span class="section-number-2">13</span> tests/sublist.w</h2>
+<div class="outline-text-2" id="text-13">
+<div class="org-src-container">
+
+<pre class="src src-wisp"><span style="color: #b22222;">; </span><span style="color: #b22222;">sublists allow to start single line function calls with a colon ( : ).</span>
+
+<span style="color: #483d8b;">define</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">a</span> b c
+  <span style="color: #483d8b;">let</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">:</span> e<span style="color: #a020f0;"> . </span>f
+<span style="color: #a020f0;">        . </span>g
+</pre>
+</div>
+</div>
+</div>
+<div id="outline-container-sec-14" class="outline-2">
+<h2 id="sec-14"><span class="section-number-2">14</span> tests/sublist.scm</h2>
+<div class="outline-text-2" id="text-14">
+<div class="org-src-container">
+
+<pre class="src src-scheme"><span style="color: #b22222;">; </span><span style="color: #b22222;">sublists allow to start single line function calls with a colon ( : ).</span>
+
+(<span style="color: #a020f0;">define</span> (<span style="color: #0000ff;">a</span> b c)
+  (<span style="color: #a020f0;">let</span> ((e . f))
+        g))
+</pre>
+</div>
+</div>
+</div>
+<div id="outline-container-sec-15" class="outline-2">
+<h2 id="sec-15"><span class="section-number-2">15</span> tests/hashbang.w</h2>
+<div class="outline-text-2" id="text-15">
+<div class="org-src-container">
+
+<pre class="src src-wisp"><span style="color: #b22222;">#!/usr/bin/wisp.py # !#</span>
+<span style="color: #b22222;">; </span><span style="color: #b22222;">This tests hashbang lines</span>
+</pre>
+</div>
+</div>
+</div>
+<div id="outline-container-sec-16" class="outline-2">
+<h2 id="sec-16"><span class="section-number-2">16</span> tests/hashbang.scm</h2>
+<div class="outline-text-2" id="text-16">
+<div class="org-src-container">
+
+<pre class="src src-scheme">#!/usr/bin/wisp.py # !#
+<span style="color: #b22222;">; </span><span style="color: #b22222;">This tests hashbang lines</span>
+</pre>
+</div>
+</div>
+</div>
+<div id="outline-container-sec-17" class="outline-2">
+<h2 id="sec-17"><span class="section-number-2">17</span> tests/readable-tests.w</h2>
+<div class="outline-text-2" id="text-17">
+<div class="org-src-container">
+
+<pre class="src src-wisp"><span style="color: #483d8b;">define</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">fibfast</span> n
+      <span style="color: #483d8b;">if</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;"><</span> n <span style="color: #008b8b;">2</span>
+<span style="color: #a020f0;">      . </span>n           
+<span style="color: #0000ff;">      fibup</span> n <span style="color: #008b8b;">2</span> <span style="color: #008b8b;">1</span> <span style="color: #008b8b;">0</span> 
+
+<span style="color: #483d8b;">define</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">fibup</span> maxnum count n-1 n-2
+       <span style="color: #483d8b;">if</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">=</span> maxnum count
+<span style="color: #0000ff;">         +</span> n-1  n-2
+<span style="color: #0000ff;">         fibup</span> maxnum 
+<span style="color: #0000ff;">               +</span> count <span style="color: #008b8b;">1</span> 
+<span style="color: #0000ff;">               +</span> n-1 n-2 
+<span style="color: #a020f0;">               . </span>n-1
+
+<span style="color: #483d8b;">define</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">factorial</span> n
+       <span style="color: #483d8b;">if</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;"><=</span> n <span style="color: #008b8b;">1</span>
+<span style="color: #a020f0;">         . </span><span style="color: #008b8b;">1</span>
+<span style="color: #0000ff;">         *</span> n 
+<span style="color: #0000ff;">           factorial</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">-</span> n <span style="color: #008b8b;">1</span>
+
+<span style="color: #483d8b;">define</span> (<span style="color: #0000ff;">gcd</span> x y)
+       <span style="color: #483d8b;">if</span> (<span style="color: #0000ff;">=</span> y <span style="color: #008b8b;">0</span>)
+<span style="color: #a020f0;">       . </span>x
+<span style="color: #0000ff;">       gcd</span> y
+<span style="color: #0000ff;">         rem</span> x y
+
+<span style="color: #483d8b;">define</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">add-if-all-numbers</span> lst
+<span style="color: #0000ff;">       call/cc</span> 
+<span style="color: #0000ff;">         lambda</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">exit</span>
+                <span style="color: #483d8b;">let</span> loop 
+<span style="color: #a020f0;">                  : </span>
+<span style="color: #0000ff;">                    lst</span> lst 
+<span style="color: #0000ff;">                    sum</span> <span style="color: #008b8b;">0</span>
+                  <span style="color: #483d8b;">if</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">null?</span> lst
+<span style="color: #a020f0;">                     . </span>sum
+                     <span style="color: #483d8b;">if</span><span style="color: #a020f0;"> : </span><span style="color: #483d8b;">not</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">number?</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">car</span> lst
+<span style="color: #0000ff;">                        exit</span> <span style="color: #008b8b;">#f</span>
+<span style="color: #0000ff;">                        +</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">car</span> lst
+<span style="color: #0000ff;">                          loop</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">cdr</span> lst
+</pre>
+</div>
+</div>
+</div>
+<div id="outline-container-sec-18" class="outline-2">
+<h2 id="sec-18"><span class="section-number-2">18</span> tests/readable-tests.scm</h2>
+<div class="outline-text-2" id="text-18">
+<div class="org-src-container">
+
+<pre class="src src-scheme">(<span style="color: #a020f0;">define</span> (<span style="color: #0000ff;">fibfast</span> n)
+      (<span style="color: #a020f0;">if</span> (< n 2))
+      n           
+      (fibup n 2 1 0 ))
+
+(<span style="color: #a020f0;">define</span> (<span style="color: #0000ff;">fibup</span> maxnum count n-1 n-2)
+       (<span style="color: #a020f0;">if</span> (= maxnum count)
+         (+ n-1  n-2)
+         (fibup maxnum 
+               (+ count 1 )
+               (+ n-1 n-2 )
+               n-1)))
+
+(<span style="color: #a020f0;">define</span> (<span style="color: #0000ff;">factorial</span> n)
+       (<span style="color: #a020f0;">if</span> (<= n 1)
+         1
+         (* n 
+           (factorial (- n 1)))))
+
+(<span style="color: #a020f0;">define</span> (<span style="color: #0000ff;">gcd</span> x y)
+       (<span style="color: #a020f0;">if</span> (= y 0))
+       x
+       (gcd y
+         (rem x y)))
+
+(<span style="color: #a020f0;">define</span> (<span style="color: #0000ff;">add-if-all-numbers</span> lst)
+       (<span style="color: #a020f0;">call/cc</span> 
+         (<span style="color: #a020f0;">lambda</span> (exit)
+                (<span style="color: #a020f0;">let</span> <span style="color: #0000ff;">loop</span> 
+                  (
+                    (lst lst )
+                    (sum 0))
+                  (<span style="color: #a020f0;">if</span> (null? lst)
+                     sum
+                     (<span style="color: #a020f0;">if</span> (not (number? (car lst)))
+                        (exit #f)
+                        (+ (car lst)
+                          (loop (cdr lst)))))))))
+</pre>
+</div>
+</div>
+</div>
+<div id="outline-container-sec-19" class="outline-2">
+<h2 id="sec-19"><span class="section-number-2">19</span> tests/quotecolon.w</h2>
+<div class="outline-text-2" id="text-19">
+<div class="org-src-container">
+
+<pre class="src src-wisp"><span style="color: #b22222;">#!/home/arne/wisp/wisp-multiline.sh  </span>
+<span style="color: #b22222;">; </span><span style="color: #b22222;">!#</span>
+<span style="color: #483d8b;">define</span> a <span style="color: #008b8b;">1</span> <span style="color: #b22222;">; </span><span style="color: #b22222;">test whether ' : correctly gets turned into '(</span>
+<span style="color: #b22222;">; </span><span style="color: #b22222;">and whether brackets in commments are treated correctly.</span>
+
+<span style="color: #483d8b;">define</span> a '<span style="color: #a020f0;"> : </span><span style="color: #0000ff;">1</span> <span style="color: #008b8b;">2</span> <span style="color: #008b8b;">3</span>
+
+<span style="color: #483d8b;">define</span>
+<span style="color: #0000ff;">  a</span> b
+<span style="color: #0000ff;">  c</span>
+</pre>
+</div>
+</div>
+</div>
+<div id="outline-container-sec-20" class="outline-2">
+<h2 id="sec-20"><span class="section-number-2">20</span> tests/quotecolon.scm</h2>
+<div class="outline-text-2" id="text-20">
+<div class="org-src-container">
+
+<pre class="src src-scheme">#!/home/arne/wisp/wisp-multiline.sh  
+<span style="color: #b22222;">; </span><span style="color: #b22222;">!#</span>
+(<span style="color: #a020f0;">define</span> <span style="color: #0000ff;">a</span> 1 )<span style="color: #b22222;">; </span><span style="color: #b22222;">test whether ' : correctly gets turned into '(</span>
+<span style="color: #b22222;">; </span><span style="color: #b22222;">and whether brackets in commments are treated correctly.</span>
+
+(<span style="color: #a020f0;">define</span> <span style="color: #0000ff;">a</span> '(1 2 3))
+
+(<span style="color: #a020f0;">define</span>
+  (a b)
+  (c))
+</pre>
+</div>
+</div>
+</div>
+<div id="outline-container-sec-21" class="outline-2">
+<h2 id="sec-21"><span class="section-number-2">21</span> tests/namedlet.w</h2>
+<div class="outline-text-2" id="text-21">
+<div class="org-src-container">
+
+<pre class="src src-wisp"><span style="color: #b22222;">#!/home/arne/wisp/wisp-multiline.sh  </span>
+<span style="color: #b22222;">; </span><span style="color: #b22222;">!#</span>
+<span style="color: #483d8b;">define</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">hello</span> who
+<span style="color: #0000ff;">  display</span> who
+
+<span style="color: #483d8b;">let</span> hello
+<span style="color: #a020f0;">  : </span><span style="color: #0000ff;">who</span> <span style="color: #008b8b;">0</span>
+  <span style="color: #483d8b;">if</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">=</span> who <span style="color: #008b8b;">5</span>
+<span style="color: #0000ff;">    display</span> who
+<span style="color: #0000ff;">    hello</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">+</span> <span style="color: #008b8b;">1</span> who
+</pre>
+</div>
+</div>
+</div>
+<div id="outline-container-sec-22" class="outline-2">
+<h2 id="sec-22"><span class="section-number-2">22</span> tests/namedlet.scm</h2>
+<div class="outline-text-2" id="text-22">
+<div class="org-src-container">
+
+<pre class="src src-scheme">#!/home/arne/wisp/wisp-multiline.sh  
+<span style="color: #b22222;">; </span><span style="color: #b22222;">!#</span>
+(<span style="color: #a020f0;">define</span> (<span style="color: #0000ff;">hello</span> who)
+  (display who))
+
+(<span style="color: #a020f0;">let</span> <span style="color: #0000ff;">hello</span>
+  ((who 0))
+  (<span style="color: #a020f0;">if</span> (= who 5)
+    (display who)
+    (hello (+ 1 who))))
+</pre>
+</div>
+</div>
+</div>
+<div id="outline-container-sec-23" class="outline-2">
+<h2 id="sec-23"><span class="section-number-2">23</span> tests/flexible-parameter-list.w</h2>
+<div class="outline-text-2" id="text-23">
+<div class="org-src-container">
+
+<pre class="src src-wisp"><span style="color: #b22222;">; </span><span style="color: #b22222;">Test using a . as first parameter on a line by prefixing it with a second .</span>
+<span style="color: #483d8b;">define</span>
+<span style="color: #0000ff;">  a</span> i
+<span style="color: #a020f0;">    . . </span>b
+<span style="color: #0000ff;">  unless</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">>=</span> i<span style="color: #a020f0;"> : </span><span style="color: #0000ff;">length</span> b
+<span style="color: #0000ff;">    display</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">number->string</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">length</span> b 
+<span style="color: #0000ff;">    display</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">list-ref</span> b i
+<span style="color: #0000ff;">    newline</span>
+<span style="color: #0000ff;">    apply</span> a ( <span style="color: #0000ff;">+</span> i <span style="color: #008b8b;">1</span> ) b
+
+
+<span style="color: #0000ff;">a</span> <span style="color: #008b8b;">0</span> <span style="color: #8b2252;">"123"</span> <span style="color: #8b2252;">"345"</span> <span style="color: #8b2252;">"567"</span>
+</pre>
+</div>
+</div>
+</div>
+<div id="outline-container-sec-24" class="outline-2">
+<h2 id="sec-24"><span class="section-number-2">24</span> tests/flexible-parameter-list.scm</h2>
+<div class="outline-text-2" id="text-24">
+<div class="org-src-container">
+
+<pre class="src src-scheme"><span style="color: #b22222;">; </span><span style="color: #b22222;">Test using a . as first parameter on a line by prefixing it with a second .</span>
+(<span style="color: #a020f0;">define</span>
+  (a i
+    . b)
+  (unless (>= i (length b))
+    (display (number->string (length b )))
+    (display (list-ref b i))
+    (newline)
+    (apply a ( + i 1 ) b)))
+
+
+(a 0 <span style="color: #8b2252;">"123"</span> <span style="color: #8b2252;">"345"</span> <span style="color: #8b2252;">"567"</span>)
+</pre>
+</div>
+</div>
+</div>
+<div id="outline-container-sec-25" class="outline-2">
+<h2 id="sec-25"><span class="section-number-2">25</span> tests/factorial.w</h2>
+<div class="outline-text-2" id="text-25">
+<div class="org-src-container">
+
+<pre class="src src-wisp"><span style="color: #b22222;">;; </span><span style="color: #b22222;">short version</span>
+<span style="color: #b22222;">; </span><span style="color: #b22222;">note: once you use one inline colon, all the following forms on that</span>
+<span style="color: #b22222;">; </span><span style="color: #b22222;">line will get closed at the end of the line</span>
+
+<span style="color: #483d8b;">define</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">factorial</span> n
+  <span style="color: #483d8b;">if</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">zero?</span> n
+<span style="color: #a020f0;">    . </span><span style="color: #008b8b;">1</span>
+<span style="color: #0000ff;">    *</span> n<span style="color: #a020f0;"> : </span><span style="color: #0000ff;">factorial</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">-</span> n <span style="color: #008b8b;">1</span>
+
+<span style="color: #0000ff;">display</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">factorial</span> <span style="color: #008b8b;">5</span> 
+
+
+<span style="color: #b22222;">;; </span><span style="color: #b22222;">more vertical space, less colons</span>
+<span style="color: #483d8b;">define</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">factorial</span> n
+  <span style="color: #483d8b;">if</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">zero?</span> n
+<span style="color: #a020f0;">    . </span><span style="color: #008b8b;">1</span>
+<span style="color: #0000ff;">    *</span> n 
+<span style="color: #0000ff;">      factorial</span> 
+<span style="color: #0000ff;">        -</span> n <span style="color: #008b8b;">1</span>
+
+<span style="color: #0000ff;">display</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">factorial</span> <span style="color: #008b8b;">5</span>
+</pre>
+</div>
+</div>
+</div>
+<div id="outline-container-sec-26" class="outline-2">
+<h2 id="sec-26"><span class="section-number-2">26</span> tests/factorial.scm</h2>
+<div class="outline-text-2" id="text-26">
+<div class="org-src-container">
+
+<pre class="src src-scheme"><span style="color: #b22222;">;; </span><span style="color: #b22222;">short version</span>
+<span style="color: #b22222;">; </span><span style="color: #b22222;">note: once you use one inline colon, all the following forms on that</span>
+<span style="color: #b22222;">; </span><span style="color: #b22222;">line will get closed at the end of the line</span>
+
+(<span style="color: #a020f0;">define</span> (<span style="color: #0000ff;">factorial</span> n)
+  (<span style="color: #a020f0;">if</span> (zero? n)
+    1
+    (* n (factorial (- n 1)))))
+
+(display (factorial 5 ))
+
+
+<span style="color: #b22222;">;; </span><span style="color: #b22222;">more vertical space, less colons</span>
+(<span style="color: #a020f0;">define</span> (<span style="color: #0000ff;">factorial</span> n)
+  (<span style="color: #a020f0;">if</span> (zero? n)
+    1
+    (* n 
+      (factorial 
+        (- n 1)))))
+
+(display (factorial 5 ))
+</pre>
+</div>
+</div>
+</div>
+<div id="outline-container-sec-27" class="outline-2">
+<h2 id="sec-27"><span class="section-number-2">27</span> tests/example.w</h2>
+<div class="outline-text-2" id="text-27">
+<div class="org-src-container">
+
+<pre class="src src-wisp"><span style="color: #483d8b;">define</span> (<span style="color: #0000ff;">a</span> b c)
+  <span style="color: #483d8b;">let</span>
+<span style="color: #a020f0;">    : </span>
+<span style="color: #0000ff;">      d</span> <span style="color: #8b2252;">"i am a string</span>
+<span style="color: #8b2252;">do not break me!"</span>
+<span style="color: #a020f0;">      : </span>
+  <span style="color: #b22222;">; </span><span style="color: #b22222;">comment: 0</span>
+        f
+<span style="color: #b22222;">; </span><span style="color: #b22222;">comment : 1</span>
+<span style="color: #0000ff;">        `</span> g <span style="color: #b22222;">; </span><span style="color: #b22222;">comment " : " 2</span>
+<span style="color: #a020f0;">      : </span>
+<span style="color: #0000ff;">        h</span> (<span style="color: #0000ff;">I</span> am in brackets:
+<span style="color: #0000ff;">           do</span> <span style="color: #483d8b;">not</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">change</span> <span style="color: #8b2252;">"me"</span>)
+<span style="color: #a020f0;">        . </span>i
+<span style="color: #0000ff;">  ,</span><span style="color: #008b8b;"> 'j</span> k
+
+<span style="color: #a020f0;">  . </span>l
+
+<span style="color: #b22222;">; </span><span style="color: #b22222;">comment</span>
+
+<span style="color: #0000ff;">  a</span> c
+
+<span style="color: #483d8b;">define</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">b</span> :n o
+<span style="color: #a020f0;">  . </span><span style="color: #8b2252;">"second defun : with a docstring!"</span>
+<span style="color: #0000ff;">  message</span> <span style="color: #8b2252;">"I am here"</span>
+<span style="color: #a020f0;">  . </span>t
+
+<span style="color: #483d8b;">define</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">c</span> e f
+<span style="color: #a020f0;">  : </span><span style="color: #0000ff;">g</span>
+<span style="color: #a020f0;">  :</span>
+<span style="color: #0000ff;">    h</span>
+<span style="color: #0000ff;">      i</span>
+<span style="color: #0000ff;">    j</span>
+<span style="color: #0000ff;">  '</span> :
+<span style="color: #0000ff;">  k</span>
+<span style="color: #a020f0;">  . </span>l
+<span style="color: #a020f0;">  . </span>: <span style="color: #0000ff;">m</span>
+
+<span style="color: #483d8b;">define</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">_</span> \:
+<span style="color: #0000ff;">__</span>
+<span style="color: #0000ff;">__</span><span style="color: #a020f0;"> . </span>\:
+
+<span style="color: #0000ff;">\_</span> b
+
+<span style="color: #483d8b;">define</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">d</span> 
+      <span style="color: #483d8b;">let</span> 
+<span style="color: #a020f0;">          : </span><span style="color: #0000ff;">a</span> b
+<span style="color: #0000ff;">            c</span> d
+
+<span style="color: #0000ff;">a</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">:</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">c</span>
+
+<span style="color: #483d8b;">let</span> 
+<span style="color: #a020f0;">    : </span><span style="color: #0000ff;">a</span> b
+      c
+
+<span style="color: #483d8b;">let</span><span style="color: #a020f0;"> : </span><span style="color: #0000ff;">:</span> a b
+
+<span style="color: #a020f0;">. </span>a
+</pre>
+</div>
+</div>
+</div>
+<div id="outline-container-sec-28" class="outline-2">
+<h2 id="sec-28"><span class="section-number-2">28</span> tests/example.scm</h2>
+<div class="outline-text-2" id="text-28">
+<div class="org-src-container">
+
+<pre class="src src-scheme">(<span style="color: #a020f0;">define</span> (<span style="color: #0000ff;">a</span> b c)
+  (<span style="color: #a020f0;">let</span>
+    (
+      (d <span style="color: #8b2252;">"i am a string</span>
+<span style="color: #8b2252;">do not break me!"</span>)
+      (
+  <span style="color: #b22222;">; </span><span style="color: #b22222;">comment: 0</span>
+        (f)
+<span style="color: #b22222;">; </span><span style="color: #b22222;">comment : 1</span>
+        `(g ))<span style="color: #b22222;">; </span><span style="color: #b22222;">comment " : " 2</span>
+      (
+        (h (I am in brackets:
+           do not : change <span style="color: #8b2252;">"me"</span>))
+        i)))
+  ,('j k)
+
+  l
+
+<span style="color: #b22222;">; </span><span style="color: #b22222;">comment</span>
+
+  (a c))
+
+(<span style="color: #a020f0;">define</span> (<span style="color: #0000ff;">b</span> <span style="color: #483d8b;">:n</span> o)
+  <span style="color: #8b2252;">"second defun : with a docstring!"</span>
+  (message <span style="color: #8b2252;">"I am here"</span>)
+  t)
+
+(<span style="color: #a020f0;">define</span> (<span style="color: #0000ff;">c</span> e f)
+  ((g))
+  (
+    (h
+      (i))
+    (j))
+  '(())
+  (k)
+  l
+  (m))
+
+(<span style="color: #a020f0;">define</span> (<span style="color: #0000ff;">_</span> :)
+
+   :)
+
+(_ b)
+
+(<span style="color: #a020f0;">define</span> (<span style="color: #0000ff;">d</span>)
+      (<span style="color: #a020f0;">let</span> 
+          ((a b)
+            (c d))))
+
+(a (((c))))
+
+(<span style="color: #a020f0;">let</span> 
+    ((a b)
+      (c)))
+
+(<span style="color: #a020f0;">let</span> ((a b)))
+
+a
+</pre>
+</div>
+</div>
+</div>
+<div id="outline-container-sec-29" class="outline-2">
+<h2 id="sec-29"><span class="section-number-2">29</span> tests/continuation.w</h2>
+<div class="outline-text-2" id="text-29">
+<div class="org-src-container">
+
+<pre class="src src-wisp"><span style="color: #0000ff;">a</span> b c d e
+<span style="color: #a020f0;">  . </span>f g h
+<span style="color: #a020f0;">  . </span>i j k
+
+<span style="color: #0000ff;">concat</span> <span style="color: #8b2252;">"I want "</span> 
+<span style="color: #0000ff;">    getwish</span> from me
+<span style="color: #a020f0;">    . </span><span style="color: #8b2252;">" - "</span> username
+</pre>
+</div>
+</div>
+</div>
+<div id="outline-container-sec-30" class="outline-2">
+<h2 id="sec-30"><span class="section-number-2">30</span> tests/continuation.scm</h2>
+<div class="outline-text-2" id="text-30">
+<div class="org-src-container">
+
+<pre class="src src-scheme">(a b c d e
+  f g h
+  i j k)
+
+(concat <span style="color: #8b2252;">"I want "</span> 
+    (getwish from me)
+    <span style="color: #8b2252;">" - "</span> username)
+</pre>
+</div>
+</div>
+</div>
+<div id="footnotes">
+<h2 class="footnotes">Footnotes: </h2>
+<div id="text-footnotes">
+
+<div class="footdef"><sup><a id="fn.1" name="fn.1" class="footnum" href="#fnr.1">1</a></sup> <p>
+To run the tests in the wisp testsuite with a separately built GNU Guile, you can use any given guile interpreter by adjusting the following command: <code>PATH=~/guile-2.0.11/meta:${PATH} ./runtests.sh</code>
+</p></div>
+
+
+</div>
+</div></div>
+<div id="postamble" class="status">
+<p class="author">Author: Arne Babenhauserheide</p>
+<p class="date">Created: 2014-12-23 Di 22:50</p>
+<p class="creator"><a href="http://www.gnu.org/software/emacs/">Emacs</a> 24.3.1 (<a href="http://orgmode.org">Org</a> mode 8.2.6)</p>
+<p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
+</div>
+</body>
+</html>