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