#!vsl

// $Id: bases,v 1.1.1.1 1995/05/01 15:48:48 zeller Exp $ 
// a few base demos

// $Log: bases,v $
# Revision 1.1.1.1  1995/05/01  15:48:48  zeller
# DDD 0.9 distribution
#
// Revision 9.3  1993/06/25  12:04:16  zeller
// Fix: Kommentare Log-Datei angepasst
//
// Revision 9.2  1993/05/22  20:22:17  zeller
// %Q% added by apply-q-flag.sh 1.5
// 
// Revision 9.1  1991/07/08  06:00:54  zeller
// Installierte Version
// 
// Revision 8.1  1991/07/06  15:04:01  zeller
// Installierte Version
// 
// Revision 4.1  1991/05/25  12:52:39  zeller
// Neue Version mit folgenden Eigenschaften:
// Let- und Where-Konstrukten;
// Lokalen und globalen Funktionen, Overloading;
// Erweiterten Fehlermeldungen.
// 
// Revision 2.4  1991/04/27  14:46:49  zeller
// Operatoren umgestellt: '|' -> ':', '!' -> '|' (wie gehabt)
// 
// Revision 2.3  1991/02/27  02:13:59  zeller
// Umstellung auf neue Syntax (fast ganz wieder die alte)
// 
// Revision 2.2  1991/02/26  11:52:01  zeller
// Umstellung von 'dispVSL' auf 'vsl'
// 
// Revision 2.1  1991/02/26  11:46:24  zeller
// Anpassung auf neue Syntax (vorerst ungetestet)
// 
// Revision 1.3  1991/02/10  18:25:16  zeller
// Letzte Definition muss global sein, um nicht geloescht zu werden
// 
// Revision 1.2  1991/02/05  13:51:12  zeller
// Rekursion mit neutralem Element beendet;
// Klammerung dank echter Assoziativitaet ueberfluessig
// 
// Revision 1.1  1991/02/04  20:19:53  zeller
// Initial revision
// 

#include <std.vsl>

start() = 0;
end() = 15;


// right-formatted number
rnum(x, base) = e_flush(num(x, base)) & " ";

// single column
show(base, start()) = vnull();
show(base, x) = show(base, x - 1) | rnum(x, base);
show(base) = e_flush("#" & num(base) & " ") | hrule() | show(base, end());

// all
bases(1) = hnull();
bases(base) = bases(base - 1) & show(base);
bases() = bases(16);

bases_main() = bases();
bases_main(...) -> bases_main();
