<?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>