This packages draws ASCII art cons cell diagrams.
License:
AGPL3
Copyright Pascal J. Bourguignon 2004 - 2012
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program.
If not, see <http://www.gnu.org/licenses/>
|
(draw-cell pict x y cell) |
generic-function |
Draws the CELL in the picture PICT, at coordinates X,Y
|
(draw-list list &key title) |
function |
DO: Draws the LIST structure.
TITLE: An alternative title.
RETURN: A string containing the drawing.
EXAMPLE: (draw-list '(if (< a b) (decf b a) (decf a b)))
returns:
"+-----------------------------------------------------------------------+
| (if (< a b) (decf b a) (decf a b)) |
| |
| +---+---+ +---+---+ +---+---+ +---+---+ |
| | * | * |-->| * | * |-->| * | * |-->| * |NIL| |
| +---+---+ +---+---+ +---+---+ +---+---+ |
| | | | | |
| v | | v |
| +----+ | | +---+---+ +---+---+ +---+---+ |
| | if | | | | * | * |-->| * | * |-->| * |NIL| |
| +----+ | | +---+---+ +---+---+ +---+---+ |
| | | | | | |
| | | v v v |
| | | +------+ +---+ +---+ |
| | | | decf | | a | | b | |
| | | +------+ +---+ +---+ |
| | v |
| | +---+---+ +---+---+ +---+---+ |
| | | * | * |-->| * | * |-->| * |NIL| |
| | +---+---+ +---+---+ +---+---+ |
| | | | | |
| | v v v |
| | +------+ +---+ +---+ |
| | | decf | | b | | a | |
| | +------+ +---+ +---+ |
| v |
| +---+---+ +---+---+ +---+---+ |
| | * | * |-->| * | * |-->| * |NIL| |
| +---+---+ +---+---+ +---+---+ |
| | | | |
| v v v |
| +---+ +---+ +---+ |
| | < | | a | | b | |
| +---+ +---+ +---+ |
+-----------------------------------------------------------------------+"
|
(print-conses tree &optional stream) |
function |
DO: Print the TREE with all cons cells as dotted pairs.
TREE: A sexp.
STREAM: The output stream (default: *STANDARD-OUTPUT*)
WARNING: doesn't handle circles nor identify EQ subtrees.
EXAMPLE: (print-conses '(a b c d))
prints:
(a . (b . (c . (d . ()))))
|
(print-identified-conses tree &optional stream) |
function |
DO: Print the TREE with all cons cells identified with a #n= notation.
TREE: A sexp.
STREAM: The output stream (default: *STANDARD-OUTPUT*)
NOTE: Handles circles in the cons structure, but not thru the other
atoms (vectors, structures, objects).
EXAMPLE: (print-identified-conses '((a . b) #1=(c . d) (e . #1#)))
prints:
((a . b) . (#1=(c . d) . ((e . #1# ) . ())))