Plaster
New
List
Login
common-lisp
default
phoe
2022.02.05 15:49:19
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; :PREFIX - pre-line prefix DRAW-CONS-TREE> (draw-tree '(foo bar baz)) ;;; [o|o]-[o|o]-[o|/] ;;; | | | ;;; FOO BAR BAZ NIL DRAW-CONS-TREE> (draw-tree '(foo bar baz) :prefix ";; >>> ") ;; >>> [o|o]-[o|o]-[o|/] ;; >>> | | | ;; >>> FOO BAR BAZ NIL ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; :WIDTH - fixed or variable width DRAW-CONS-TREE> (draw-tree `(defun foo (&rest things) (apply #'+ things)) :width 5) ;;; [o|o][o|o][o|o][o|/] ;;; | | | | ;;; D... FOO | [o|o][o|o][o|/] ;;; | | | | ;;; | A... | T... ;;; | | ;;; [o|o][o|/][o|o][o|/] ;;; | | | | ;;; &... T... F... + NIL DRAW-CONS-TREE> (draw-tree `(defun foo (&rest things) (apply #'+ things)) :width 12) ;;; [o|o]-------[o|o]-------[o|o]-------[o|/] ;;; | | | | ;;; DEFUN FOO | [o|o]-------[o|o]-------[o|/] ;;; | | | | ;;; | APPLY | THINGS ;;; | | ;;; [o|o]-------[o|/] [o|o]-------[o|/] ;;; | | | | ;;; &REST THINGS FUNCTION + NIL DRAW-CONS-TREE> (draw-tree `(defun foo (&rest things) (apply #'+ things)) :width nil) ;;; [o|o]-[o|o]-[o|o]-[o|/] ;;; | | | | ;;; DEFUN FOO | [o|o]--[o|o]----[o|/] ;;; | | | | ;;; | APPLY | THINGS ;;; | | ;;; [o|o]-[o|/] [o|o]----[o|/] ;;; | | | | ;;; &REST THINGS FUNCTION + NIL ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; :STREAM - stream selection DRAW-CONS-TREE> (let ((*print-circle* nil)) (draw-tree '(foo bar baz) :stream t)) ;;; [o|o]-[o|o]-[o|/] ;;; | | | ;;; FOO BAR BAZ NIL DRAW-CONS-TREE> (with-output-to-string (s) (let ((*print-circle* nil)) (draw-tree '(foo bar baz) :stream s))) ";;; [o|o]-[o|o]-[o|/] ;;; | | | ;;; FOO BAR BAZ" DRAW-CONS-TREE> (let ((*print-circle* nil)) (draw-tree '(foo bar baz) :stream nil)) ";;; [o|o]-[o|o]-[o|/] ;;; | | | ;;; FOO BAR BAZ" ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; *PRINT-CIRCLE* - detection of structure sharing in conses DRAW-CONS-TREE> (let ((*print-circle* t)) (draw-tree '#1=(#1# . nil))) ;;; #1=[o|/] ;;; | ;;; #1# NIL DRAW-CONS-TREE> (let ((*print-circle* t)) (draw-tree '#1=(nil . #1#))) ;;; #1=[/|o]-#1# NIL DRAW-CONS-TREE> (let ((*print-circle* t)) (draw-tree '#1=(#1# . #1#))) ;;; #1=[o|o]-#1# ;;; | ;;; #1# NIL DRAW-CONS-TREE> (let ((*print-circle* nil)) (draw-tree '(#1=(1 2 3) #1# #2=(2 3 4) #2#))) ;;; [o|o]-[o|o]-[o|o]-[o|/] ;;; | | | | ;;; | | | [o|o]-[o|o]-[o|/] ;;; | | | | | | ;;; | | | 2 3 4 ;;; | | | ;;; | | [o|o]-[o|o]-[o|/] ;;; | | | | | ;;; | | 2 3 4 ;;; | | ;;; | [o|o]-[o|o]-[o|/] ;;; | | | | ;;; | 1 2 3 ;;; | ;;; [o|o]-[o|o]-[o|/] ;;; | | | ;;; 1 2 3 NIL DRAW-CONS-TREE> (let ((*print-circle* t)) (draw-tree '(#1=(1 2 3) #1# #2=(2 3 4) #2#))) ;;; [o|o]----[o|o]-[o|o]----[o|/] ;;; | | | | ;;; #2# | #1# #1=[o|o]-[o|o]-[o|/] ;;; | | | | ;;; | 2 3 4 ;;; | ;;; #2=[o|o]-[o|o]----[o|/] ;;; | | | ;;; 1 2 3 NIL DRAW-CONS-TREE> (let ((*print-circle* t)) (draw-tree '(#1=(1 2 3) #1# #2=(2 3 4) #2# #3=(a 3 4) #3# #4=(b 3 4) #4#))) ;;; [o|o]----[o|o]-[o|o]----[o|o]-[o|o]----[o|o]-[o|o]----[o|/] ;;; | | | | | | | | ;;; #4# | #3# | #2# | #1# #1=[o|o]-[o|o]-[o|/] ;;; | | | | | | ;;; | | | B 3 4 ;;; | | | ;;; | | #2=[o|o]-[o|o]----[o|/] ;;; | | | | | ;;; | | A 3 4 ;;; | | ;;; | #3=[o|o]-[o|o]----[o|/] ;;; | | | | ;;; | 2 3 4 ;;; | ;;; #4=[o|o]-[o|o]----[o|/] ;;; | | | ;;; 1 2 3 NIL DRAW-CONS-TREE> (let ((*print-circle* nil)) (draw-tree '(#1=(1 2 3) #1# #2=(2 3 4) #2# #3=(a 3 4) #3# #4=(b 3 4) #4#))) ;;; [o|o]-[o|o]-[o|o]-[o|o]-[o|o]-[o|o]-[o|o]-[o|/] ;;; | | | | | | | | ;;; | | | | | | | [o|o]-[o|o]-[o|/] ;;; | | | | | | | | | | ;;; | | | | | | | B 3 4 ;;; | | | | | | | ;;; | | | | | | [o|o]-[o|o]-[o|/] ;;; | | | | | | | | | ;;; | | | | | | B 3 4 ;;; | | | | | | ;;; | | | | | [o|o]-[o|o]-[o|/] ;;; | | | | | | | | ;;; | | | | | A 3 4 ;;; | | | | | ;;; | | | | [o|o]-[o|o]-[o|/] ;;; | | | | | | | ;;; | | | | A 3 4 ;;; | | | | ;;; | | | [o|o]-[o|o]-[o|/] ;;; | | | | | | ;;; | | | 2 3 4 ;;; | | | ;;; | | [o|o]-[o|o]-[o|/] ;;; | | | | | ;;; | | 2 3 4 ;;; | | ;;; | [o|o]-[o|o]-[o|/] ;;; | | | | ;;; | 1 2 3 ;;; | ;;; [o|o]-[o|o]-[o|/] ;;; | | | ;;; 1 2 3 NIL
Raw
Annotate
Repaste