# HG changeset patch # User Steve Losh <steve@stevelosh.com> # Date 1575419552 18000 # Node ID e805f586a549bf08bd6991f899da19b44b1ed156 # Parent 697d200ad3494d37aa223491d475b6b84d2fd718 cl-digraph: Update site. diff -r 697d200ad349 -r e805f586a549 cl-digraph/_dmedia/goodwolf.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cl-digraph/_dmedia/goodwolf.css Tue Dec 03 19:32:32 2019 -0500 @@ -0,0 +1,62 @@ +/* @override http://localhost:8080/media/css/pygments-monokai-light.css */ +div.highlight .hll { background-color: #FFD7EF; display: block; } +div.highlight .err { color: #fff; background-color: #f00 } /* Error */ +div.highlight .gi { font-weight: bold } /* Diff Insert */ +div.highlight .gd { font-weight: bold } /* Diff Delete */ +div.highlight .k { color: #111} /* Keyword */ +div.highlight .l { color: #111 } /* Literal */ +div.highlight .n { color: #111 } /* Name */ +div.highlight .o { color: #111 } /* Operator */ +div.highlight .p { color: #111 } /* Punctuation */ +div.highlight .c { color: #714678; font-style: italic; font-weight: bold; } /* Comment */ +div.highlight .cm { color: #714678; font-style: italic; font-weight: bold; } /* Comment.Multiline */ +div.highlight .cp { color: #714678; font-style: italic; font-weight: bold; } /* Comment.Preproc */ +div.highlight .c1 { color: #714678; font-style: italic; font-weight: bold; } /* Comment.Single */ +div.highlight .cs { color: #714678; font-style: italic; font-weight: bold; } /* Comment.Special */ +div.highlight .ge { font-style: italic } /* Generic.Emph */ +div.highlight .gs { font-weight: bold } /* Generic.Strong */ +div.highlight .kc { color: #111 } /* Keyword.Constant */ +div.highlight .kd { color: #111 } /* Keyword.Declaration */ +div.highlight .kn { color: #111 } /* Keyword.Namespace */ +div.highlight .kp { color: #111 } /* Keyword.Pseudo */ +div.highlight .kr { color: #111 } /* Keyword.Reserved */ +div.highlight .kt { color: #111 } /* Keyword.Type */ +div.highlight .ld { color: #111 } /* Literal.Date */ +div.highlight .m { color: #111 } /* Literal.Number */ +div.highlight .s { color: #111; font-style: italic; } /* Literal.String */ +div.highlight .na { color: #111 } /* Name.Attribute */ +div.highlight .nb { color: #111 } /* Name.Builtin */ +div.highlight .nc { color: #111 } /* Name.Class */ +div.highlight .no { color: #111 } /* Name.Constant */ +div.highlight .nd { color: #111 } /* Name.Decorator */ +div.highlight .ni { color: #111 } /* Name.Entity */ +div.highlight .ne { color: #111 } /* Name.Exception */ +div.highlight .nf { color: #111} /* Name.Function */ +div.highlight .nl { color: #111 } /* Name.Label */ +div.highlight .nn { color: #111} /* Name.Namespace */ +div.highlight .nx { color: #111 } /* Name.Other */ +div.highlight .py { color: #111 } /* Name.Property */ +div.highlight .nt { color: #111 } /* Name.Tag */ +div.highlight .nv { color: #111 } /* Name.Variable */ +div.highlight .ow { color: #111 } /* Operator.Word */ +div.highlight .w { color: #111 } /* Text.Whitespace */ +div.highlight .mf { color: #111 } /* Literal.Number.Float */ +div.highlight .mh { color: #111 } /* Literal.Number.Hex */ +div.highlight .mi { color: #111 } /* Literal.Number.Integer */ +div.highlight .mo { color: #111 } /* Literal.Number.Oct */ +div.highlight .sb { color: #111 } /* Literal.String.Backtick */ +div.highlight .sc { color: #111 } /* Literal.String.Char */ +div.highlight .sd { color: #111 } /* Literal.String.Doc */ +div.highlight .s2 { color: #111 } /* Literal.String.Double */ +div.highlight .se { color: #111 } /* Literal.String.Escape */ +div.highlight .sh { color: #111 } /* Literal.String.Heredoc */ +div.highlight .si { color: #111 } /* Literal.String.Interpol */ +div.highlight .sx { color: #111 } /* Literal.String.Other */ +div.highlight .sr { color: #111 } /* Literal.String.Regex */ +div.highlight .s1 { color: #111 } /* Literal.String.Single */ +div.highlight .ss { color: #111 } /* Literal.String.Symbol */ +div.highlight .bp { color: #111 } /* Name.Builtin.Pseudo */ +div.highlight .vc { color: #111 } /* Name.Variable.Class */ +div.highlight .vg { color: #111 } /* Name.Variable.Global */ +div.highlight .vi { color: #111 } /* Name.Variable.Instance */ +div.highlight .il { color: #111 } /* Literal.Number.Integer.Long */ diff -r 697d200ad349 -r e805f586a549 cl-digraph/_dmedia/style.less --- a/cl-digraph/_dmedia/style.less Sun Nov 17 18:28:54 2019 -0500 +++ b/cl-digraph/_dmedia/style.less Tue Dec 03 19:32:32 2019 -0500 @@ -2,11 +2,11 @@ overflow-y: scroll; } .wrap { - width: 600px; + width: 640px; margin: 40px auto 180px; } body { - font-size: 18px; + font-size: 16px; line-height: 1.4; font-family: Georgia, Palatino, "Palatino Linotype", serif; color: #111111; @@ -27,11 +27,11 @@ } } h1 { - font-size: 48px; + font-size: 40px; line-height: 1; } h2 { - font-size: 34px; + font-size: 28px; line-height: 1; margin-top: 40px; margin-bottom: 0; @@ -44,7 +44,7 @@ } } h3 { - font-size: 26px; + font-size: 22px; line-height: 1; margin-top: 40px; margin-bottom: 0; @@ -57,7 +57,7 @@ } } h4 { - font-size: 20px; + font-size: 18px; line-height: 1; margin-top: 30px; margin-bottom: 0; @@ -83,7 +83,7 @@ } } pre { - font-size: 15px; + font-size: 14px; line-height: 1.3; white-space: pre; overflow-x: auto; @@ -93,7 +93,7 @@ font-family: Menlo, Monaco, Consolas, monospace; } code { - font-size: 15px; + font-size: 14px; border: 1px solid #fdd; background: #fffafa; padding: 1px 4px; diff -r 697d200ad349 -r e805f586a549 cl-digraph/_dmedia/tango.css --- a/cl-digraph/_dmedia/tango.css Sun Nov 17 18:28:54 2019 -0500 +++ b/cl-digraph/_dmedia/tango.css Tue Dec 03 19:32:32 2019 -0500 @@ -1,6 +1,6 @@ .codehilite .hll { background-color: #ffffcc } .codehilite .c { color: #8f5902; font-style: italic } /* Comment */ -.codehilite .err { color: #a40000; border: 1px solid #ef2929 } /* Error */ +.codehilite .err { color: #000000; } /* Error */ .codehilite .g { color: #000000 } /* Generic */ .codehilite .k { color: #204a87; font-weight: bold } /* Keyword */ .codehilite .l { color: #000000 } /* Literal */ @@ -61,7 +61,7 @@ .codehilite .sx { color: #4e9a06 } /* Literal.String.Other */ .codehilite .sr { color: #4e9a06 } /* Literal.String.Regex */ .codehilite .s1 { color: #4e9a06 } /* Literal.String.Single */ -.codehilite .ss { color: #4e9a06 } /* Literal.String.Symbol */ +.codehilite .ss { color: #000000 } /* Literal.String.Symbol */ .codehilite .bp { color: #3465a4 } /* Name.Builtin.Pseudo */ .codehilite .vc { color: #000000 } /* Name.Variable.Class */ .codehilite .vg { color: #000000 } /* Name.Variable.Global */ diff -r 697d200ad349 -r e805f586a549 cl-digraph/changelog/index.html --- a/cl-digraph/changelog/index.html Sun Nov 17 18:28:54 2019 -0500 +++ b/cl-digraph/changelog/index.html Tue Dec 03 19:32:32 2019 -0500 @@ -15,11 +15,15 @@ <h1 id="changelog"><a href="">Changelog</a></h1><p>Here's the list of changes in each released version.</p> <div class="toc"> <ul> +<li><a href="#v130">v1.3.0</a></li> <li><a href="#v121">v1.2.1</a></li> <li><a href="#v120">v1.2.0</a></li> <li><a href="#v110">v1.1.0</a></li> <li><a href="#v100">v1.0.0</a></li> </ul></div> +<h2 id="v130">v1.3.0</h2> +<p>Added the <code>arbitrary-vertex</code> function to return an arbitrary vertex of +a digraph.</p> <h2 id="v121">v1.2.1</h2> <p>Fixed a bug in <code>copy-digraph</code>.</p> <h2 id="v120">v1.2.0</h2> diff -r 697d200ad349 -r e805f586a549 cl-digraph/reference-dot/index.html --- a/cl-digraph/reference-dot/index.html Sun Nov 17 18:28:54 2019 -0500 +++ b/cl-digraph/reference-dot/index.html Tue Dec 03 19:32:32 2019 -0500 @@ -23,7 +23,7 @@ </ul></div> <h2 id="package-digraphdot">Package <code>DIGRAPH.DOT</code></h2> <h3 id="draw-function"><code>DRAW</code> (function)</h3> -<div class="codehilite"><pre><span/>(DRAW DIGRAPH &amp;KEY (FILENAME digraph.png) (FORMAT :PNG)) +<div class="codehilite"><pre><span/>(DRAW DIGRAPH &KEY (FILENAME digraph.png) (FORMAT :PNG)) </pre></div> diff -r 697d200ad349 -r e805f586a549 cl-digraph/reference/index.html --- a/cl-digraph/reference/index.html Sun Nov 17 18:28:54 2019 -0500 +++ b/cl-digraph/reference/index.html Tue Dec 03 19:32:32 2019 -0500 @@ -20,6 +20,7 @@ <div class="toc"> <ul> <li><a href="#package-digraph">Package DIGRAPH</a><ul> +<li><a href="#arbitrary-vertex-function">ARBITRARY-VERTEX (function)</a></li> <li><a href="#contains-edge-p-function">CONTAINS-EDGE-P (function)</a></li> <li><a href="#contains-vertex-p-function">CONTAINS-VERTEX-P (function)</a></li> <li><a href="#copy-digraph-function">COPY-DIGRAPH (function)</a></li> @@ -58,6 +59,13 @@ </li> </ul></div> <h2 id="package-digraph">Package <code>DIGRAPH</code></h2> +<h3 id="arbitrary-vertex-function"><code>ARBITRARY-VERTEX</code> (function)</h3> +<div class="codehilite"><pre><span/>(ARBITRARY-VERTEX DIGRAPH) +</pre></div> + + +<p>Return an arbitrary vertex of <code>digraph</code> and <code>t</code>.</p> +<p>If the digraph is empty, <code>(values nil nil)</code> will be returned instead.</p> <h3 id="contains-edge-p-function"><code>CONTAINS-EDGE-P</code> (function)</h3> <div class="codehilite"><pre><span/>(CONTAINS-EDGE-P DIGRAPH PREDECESSOR SUCCESSOR) </pre></div> @@ -154,7 +162,7 @@ <p>This is currently O(vertices).</p> <p>A root is a vertex with no outgoing edges (i.e. out-degree 0).</p> <h3 id="make-digraph-function"><code>MAKE-DIGRAPH</code> (function)</h3> -<div class="codehilite"><pre><span/>(MAKE-DIGRAPH &amp;KEY INITIAL-VERTICES (TEST #'EQL) (HASH-FUNCTION NIL)) +<div class="codehilite"><pre><span/>(MAKE-DIGRAPH &KEY INITIAL-VERTICES (TEST #'EQL) (HASH-FUNCTION NIL)) </pre></div> @@ -255,7 +263,7 @@ <p>Return a fresh list of the predecessors of <code>vertex</code>.</p> <h3 id="reachablep-function"><code>REACHABLEP</code> (function)</h3> -<div class="codehilite"><pre><span/>(REACHABLEP DIGRAPH START TARGET &amp;KEY (STRATEGY :BREADTH-FIRST)) +<div class="codehilite"><pre><span/>(REACHABLEP DIGRAPH START TARGET &KEY (STRATEGY :BREADTH-FIRST)) </pre></div> diff -r 697d200ad349 -r e805f586a549 cl-digraph/usage/index.html --- a/cl-digraph/usage/index.html Sun Nov 17 18:28:54 2019 -0500 +++ b/cl-digraph/usage/index.html Tue Dec 03 19:32:32 2019 -0500 @@ -43,8 +43,8 @@ <h2 id="creating-digraphs">Creating Digraphs</h2> <p>Digraphs can be created with <code>make-digraph</code>:</p> <div class="codehilite"><pre><span/><span class="p">(</span><span class="nv">digraph:make-digraph</span><span class="p">)</span> -<span class="c1">; =&gt;</span> -<span class="err">#</span><span class="nv">&lt</span><span class="c1">;DIGRAPH:DIGRAPH () {1002CFD343}&gt;</span> +<span class="c1">; =></span> +<span class="err">#</span><span class="nv"><DIGRAPH:DIGRAPH</span> <span class="p">()</span> <span class="nv">{1002CFD343}></span> </pre></div> @@ -54,15 +54,15 @@ <div class="codehilite"><pre><span/><span class="p">(</span><span class="nb">defparameter</span> <span class="vg">*d*</span> <span class="p">(</span><span class="nv">digraph:make-digraph</span><span class="p">))</span> <span class="p">(</span><span class="nv">digraph:vertices</span> <span class="vg">*d*</span><span class="p">)</span> -<span class="c1">; =&gt; ()</span> +<span class="c1">; => ()</span> <span class="p">(</span><span class="nv">digraph:insert-vertex</span> <span class="vg">*d*</span> <span class="ss">'foo</span><span class="p">)</span> <span class="p">(</span><span class="nv">digraph:vertices</span> <span class="vg">*d*</span><span class="p">)</span> -<span class="c1">; =&gt; (foo)</span> +<span class="c1">; => (foo)</span> <span class="p">(</span><span class="nv">digraph:insert-vertex</span> <span class="vg">*d*</span> <span class="ss">'bar</span><span class="p">)</span> <span class="p">(</span><span class="nv">digraph:vertices</span> <span class="vg">*d*</span><span class="p">)</span> -<span class="c1">; =&gt; (bar foo)</span> +<span class="c1">; => (bar foo)</span> </pre></div> @@ -75,7 +75,7 @@ <span class="p">(</span><span class="nv">digraph:insert-vertex</span> <span class="vg">*d*</span> <span class="ss">'foo</span><span class="p">)</span> <span class="p">(</span><span class="nv">digraph:insert-vertex</span> <span class="vg">*d*</span> <span class="ss">'foo</span><span class="p">)</span> <span class="p">(</span><span class="nv">digraph:vertices</span> <span class="vg">*d*</span><span class="p">)</span> -<span class="c1">; =&gt; (foo)</span> +<span class="c1">; => (foo)</span> </pre></div> @@ -85,11 +85,11 @@ <span class="p">(</span><span class="nv">digraph:make-digraph</span> <span class="ss">:initial-vertices</span> <span class="o">'</span><span class="p">(</span><span class="nv">a</span> <span class="nv">b</span> <span class="nv">c</span><span class="p">)))</span> <span class="p">(</span><span class="nv">digraph:vertices</span> <span class="vg">*d*</span><span class="p">)</span> -<span class="c1">; =&gt; (a c b)</span> +<span class="c1">; => (a c b)</span> <span class="p">(</span><span class="nv">digraph:insert-vertex</span> <span class="vg">*d*</span> <span class="ss">'foo</span><span class="p">)</span> <span class="p">(</span><span class="nv">digraph:vertices</span> <span class="vg">*d*</span><span class="p">)</span> -<span class="c1">; =&gt; (a c foo b)</span> +<span class="c1">; => (a c foo b)</span> </pre></div> @@ -99,15 +99,15 @@ <span class="p">(</span><span class="nv">digraph:make-digraph</span> <span class="ss">:initial-vertices</span> <span class="o">'</span><span class="p">(</span><span class="nv">a</span> <span class="nv">b</span> <span class="nv">c</span><span class="p">)))</span> <span class="p">(</span><span class="nv">digraph:vertices</span> <span class="vg">*d*</span><span class="p">)</span> -<span class="c1">; =&gt; (a c b)</span> +<span class="c1">; => (a c b)</span> <span class="p">(</span><span class="nv">digraph:remove-vertex</span> <span class="vg">*d*</span> <span class="ss">'a</span><span class="p">)</span> <span class="p">(</span><span class="nv">digraph:vertices</span> <span class="vg">*d*</span><span class="p">)</span> -<span class="c1">; =&gt; (c b)</span> +<span class="c1">; => (c b)</span> <span class="p">(</span><span class="nv">digraph:remove-vertex</span> <span class="vg">*d*</span> <span class="ss">'cats</span><span class="p">)</span> <span class="p">(</span><span class="nv">digraph:vertices</span> <span class="vg">*d*</span><span class="p">)</span> -<span class="c1">; =&gt; (c b)</span> +<span class="c1">; => (c b)</span> </pre></div> @@ -121,15 +121,15 @@ <span class="p">(</span><span class="nv">digraph:insert-vertex</span> <span class="vg">*d*</span> <span class="p">(</span><span class="nb">list</span> <span class="mi">1</span> <span class="mi">2</span><span class="p">))</span> <span class="p">(</span><span class="nv">digraph:insert-vertex</span> <span class="vg">*d*</span> <span class="p">(</span><span class="nb">list</span> <span class="mi">3</span> <span class="mi">4</span><span class="p">))</span> <span class="p">(</span><span class="nv">digraph:vertices</span> <span class="vg">*d*</span><span class="p">)</span> -<span class="c1">; =&gt; ((1 2) (3 4))</span> +<span class="c1">; => ((1 2) (3 4))</span> <span class="p">(</span><span class="nv">digraph:insert-vertex</span> <span class="vg">*d*</span> <span class="p">(</span><span class="nb">list</span> <span class="mi">1</span> <span class="mi">2</span><span class="p">))</span> <span class="p">(</span><span class="nv">digraph:vertices</span> <span class="vg">*d*</span><span class="p">)</span> -<span class="c1">; =&gt; ((1 2) (3 4))</span> +<span class="c1">; => ((1 2) (3 4))</span> <span class="p">(</span><span class="nv">digraph:remove-vertex</span> <span class="vg">*d*</span> <span class="p">(</span><span class="nb">list</span> <span class="mi">1</span> <span class="mi">2</span><span class="p">))</span> <span class="p">(</span><span class="nv">digraph:vertices</span> <span class="vg">*d*</span><span class="p">)</span> -<span class="c1">; =&gt; ((3 4))</span> +<span class="c1">; => ((3 4))</span> </pre></div> @@ -161,15 +161,15 @@ <span class="p">(</span><span class="nv">digraph:make-digraph</span> <span class="ss">:initial-vertices</span> <span class="o">'</span><span class="p">(</span><span class="nv">a</span> <span class="nv">b</span> <span class="nv">c</span><span class="p">)))</span> <span class="p">(</span><span class="nv">digraph:edges</span> <span class="vg">*d*</span><span class="p">)</span> -<span class="c1">; =&gt; ()</span> +<span class="c1">; => ()</span> -<span class="p">(</span><span class="nv">digraph:insert-edge</span> <span class="vg">*d*</span> <span class="ss">'a</span> <span class="ss">'b</span><span class="p">)</span> <span class="c1">; a -&gt; b</span> +<span class="p">(</span><span class="nv">digraph:insert-edge</span> <span class="vg">*d*</span> <span class="ss">'a</span> <span class="ss">'b</span><span class="p">)</span> <span class="c1">; a -> b</span> <span class="p">(</span><span class="nv">digraph:edges</span> <span class="vg">*d*</span><span class="p">)</span> -<span class="c1">; =&gt; ((a . b))</span> +<span class="c1">; => ((a . b))</span> -<span class="p">(</span><span class="nv">digraph:insert-edge</span> <span class="vg">*d*</span> <span class="ss">'b</span> <span class="ss">'c</span><span class="p">)</span> <span class="c1">; b -&gt; c</span> +<span class="p">(</span><span class="nv">digraph:insert-edge</span> <span class="vg">*d*</span> <span class="ss">'b</span> <span class="ss">'c</span><span class="p">)</span> <span class="c1">; b -> c</span> <span class="p">(</span><span class="nv">digraph:edges</span> <span class="vg">*d*</span><span class="p">)</span> -<span class="c1">; =&gt; ((b . c) (a . b))</span> +<span class="c1">; => ((b . c) (a . b))</span> </pre></div> @@ -178,14 +178,14 @@ <div class="codehilite"><pre><span/><span class="p">(</span><span class="nb">defparameter</span> <span class="vg">*d*</span> <span class="p">(</span><span class="nv">digraph:make-digraph</span> <span class="ss">:initial-vertices</span> <span class="o">'</span><span class="p">(</span><span class="nv">a</span> <span class="nv">b</span> <span class="nv">c</span><span class="p">)))</span> -<span class="p">(</span><span class="nv">digraph:insert-edge</span> <span class="vg">*d*</span> <span class="ss">'a</span> <span class="ss">'b</span><span class="p">)</span> <span class="c1">; a -&gt; b</span> +<span class="p">(</span><span class="nv">digraph:insert-edge</span> <span class="vg">*d*</span> <span class="ss">'a</span> <span class="ss">'b</span><span class="p">)</span> <span class="c1">; a -> b</span> <span class="p">(</span><span class="nv">digraph:insert-edge</span> <span class="vg">*d*</span> <span class="ss">'a</span> <span class="ss">'b</span><span class="p">)</span> <span class="c1">; ignored</span> <span class="p">(</span><span class="nv">digraph:insert-edge</span> <span class="vg">*d*</span> <span class="ss">'a</span> <span class="ss">'b</span><span class="p">)</span> <span class="c1">; ignored</span> <span class="p">(</span><span class="nv">digraph:edges</span> <span class="vg">*d*</span><span class="p">)</span> -<span class="c1">; =&gt; ((a . b))</span> +<span class="c1">; => ((a . b))</span> <span class="p">(</span><span class="nv">digraph:insert-edge</span> <span class="vg">*d*</span> <span class="ss">'cats</span> <span class="ss">'dogs</span><span class="p">)</span> -<span class="c1">; =&gt; Error!</span> +<span class="c1">; => Error!</span> </pre></div> @@ -194,14 +194,14 @@ <div class="codehilite"><pre><span/><span class="p">(</span><span class="nb">defparameter</span> <span class="vg">*d*</span> <span class="p">(</span><span class="nv">digraph:make-digraph</span> <span class="ss">:initial-vertices</span> <span class="o">'</span><span class="p">(</span><span class="nv">a</span> <span class="nv">b</span> <span class="nv">c</span><span class="p">)))</span> -<span class="p">(</span><span class="nv">digraph:insert-edge</span> <span class="vg">*d*</span> <span class="ss">'a</span> <span class="ss">'b</span><span class="p">)</span> <span class="c1">; a -&gt; b</span> +<span class="p">(</span><span class="nv">digraph:insert-edge</span> <span class="vg">*d*</span> <span class="ss">'a</span> <span class="ss">'b</span><span class="p">)</span> <span class="c1">; a -> b</span> <span class="p">(</span><span class="nv">digraph:edges</span> <span class="vg">*d*</span><span class="p">)</span> -<span class="c1">; =&gt; ((a . b))</span> +<span class="c1">; => ((a . b))</span> -<span class="p">(</span><span class="nv">digraph:remove-edge</span> <span class="vg">*d*</span> <span class="ss">'a</span> <span class="ss">'b</span><span class="p">)</span> <span class="c1">; removes a -&gt; b</span> +<span class="p">(</span><span class="nv">digraph:remove-edge</span> <span class="vg">*d*</span> <span class="ss">'a</span> <span class="ss">'b</span><span class="p">)</span> <span class="c1">; removes a -> b</span> <span class="p">(</span><span class="nv">digraph:remove-edge</span> <span class="vg">*d*</span> <span class="ss">'a</span> <span class="ss">'b</span><span class="p">)</span> <span class="c1">; ignored</span> <span class="p">(</span><span class="nv">digraph:edges</span> <span class="vg">*d*</span><span class="p">)</span> -<span class="c1">; =&gt; ()</span> +<span class="c1">; => ()</span> </pre></div> @@ -231,10 +231,10 @@ <h3 id="vertices-and-edges">Vertices and Edges</h3> <p>We've already seen <code>vertices</code> and <code>edges</code>:</p> <div class="codehilite"><pre><span/><span class="p">(</span><span class="nv">digraph:vertices</span> <span class="vg">*d*</span><span class="p">)</span> -<span class="c1">; =&gt; (BAR FOO D C B A)</span> +<span class="c1">; => (BAR FOO D C B A)</span> <span class="p">(</span><span class="nv">digraph:edges</span> <span class="vg">*d*</span><span class="p">)</span> -<span class="c1">; =&gt; ((BAR . BAR) (FOO . BAR) (B . D) (A . B) (A . C))</span> +<span class="c1">; => ((BAR . BAR) (FOO . BAR) (B . D) (A . B) (A . C))</span> </pre></div> @@ -243,49 +243,49 @@ <h3 id="neighboring-vertices">Neighboring Vertices</h3> <p>The <code>predecessors</code> and <code>successors</code> functions return a list of vertices with edges to/from a particular vertex:</p> -<div class="codehilite"><pre><span/><span class="p">(</span><span class="nv">digraph:predecessors</span> <span class="vg">*d*</span> <span class="ss">'a</span><span class="p">)</span> <span class="c1">; =&gt; ()</span> -<span class="p">(</span><span class="nv">digraph:successors</span> <span class="vg">*d*</span> <span class="ss">'a</span><span class="p">)</span> <span class="c1">; =&gt; (b c)</span> +<div class="codehilite"><pre><span/><span class="p">(</span><span class="nv">digraph:predecessors</span> <span class="vg">*d*</span> <span class="ss">'a</span><span class="p">)</span> <span class="c1">; => ()</span> +<span class="p">(</span><span class="nv">digraph:successors</span> <span class="vg">*d*</span> <span class="ss">'a</span><span class="p">)</span> <span class="c1">; => (b c)</span> -<span class="p">(</span><span class="nv">digraph:predecessors</span> <span class="vg">*d*</span> <span class="ss">'bar</span><span class="p">)</span> <span class="c1">; =&gt; (foo bar)</span> -<span class="p">(</span><span class="nv">digraph:successors</span> <span class="vg">*d*</span> <span class="ss">'bar</span><span class="p">)</span> <span class="c1">; =&gt; (bar)</span> +<span class="p">(</span><span class="nv">digraph:predecessors</span> <span class="vg">*d*</span> <span class="ss">'bar</span><span class="p">)</span> <span class="c1">; => (foo bar)</span> +<span class="p">(</span><span class="nv">digraph:successors</span> <span class="vg">*d*</span> <span class="ss">'bar</span><span class="p">)</span> <span class="c1">; => (bar)</span> </pre></div> <p><code>neighbors</code> returns all vertices that are a predecessor <em>or</em> successor of the given vertex:</p> -<div class="codehilite"><pre><span/><span class="p">(</span><span class="nv">digraph:neighbors</span> <span class="vg">*d*</span> <span class="ss">'b</span><span class="p">)</span> <span class="c1">; =&gt; (a d)</span> +<div class="codehilite"><pre><span/><span class="p">(</span><span class="nv">digraph:neighbors</span> <span class="vg">*d*</span> <span class="ss">'b</span><span class="p">)</span> <span class="c1">; => (a d)</span> </pre></div> <h3 id="membership">Membership</h3> <p>To check whether a digraph contains a particular edge or vertex use <code>contains-vertex-p</code> and <code>contains-edge-p</code>:</p> -<div class="codehilite"><pre><span/><span class="p">(</span><span class="nv">digraph:contains-vertex-p</span> <span class="vg">*d*</span> <span class="ss">'a</span><span class="p">)</span> <span class="c1">; =&gt; t</span> -<span class="p">(</span><span class="nv">digraph:contains-vertex-p</span> <span class="vg">*d*</span> <span class="ss">'horses</span><span class="p">)</span> <span class="c1">; =&gt; nil</span> +<div class="codehilite"><pre><span/><span class="p">(</span><span class="nv">digraph:contains-vertex-p</span> <span class="vg">*d*</span> <span class="ss">'a</span><span class="p">)</span> <span class="c1">; => t</span> +<span class="p">(</span><span class="nv">digraph:contains-vertex-p</span> <span class="vg">*d*</span> <span class="ss">'horses</span><span class="p">)</span> <span class="c1">; => nil</span> -<span class="p">(</span><span class="nv">digraph:contains-edge-p</span> <span class="vg">*d*</span> <span class="ss">'a</span> <span class="ss">'b</span><span class="p">)</span> <span class="c1">; =&gt; t</span> -<span class="p">(</span><span class="nv">digraph:contains-edge-p</span> <span class="vg">*d*</span> <span class="ss">'a</span> <span class="ss">'foo</span><span class="p">)</span> <span class="c1">; =&gt; nil</span> +<span class="p">(</span><span class="nv">digraph:contains-edge-p</span> <span class="vg">*d*</span> <span class="ss">'a</span> <span class="ss">'b</span><span class="p">)</span> <span class="c1">; => t</span> +<span class="p">(</span><span class="nv">digraph:contains-edge-p</span> <span class="vg">*d*</span> <span class="ss">'a</span> <span class="ss">'foo</span><span class="p">)</span> <span class="c1">; => nil</span> </pre></div> <h3 id="sizes-and-counts">Sizes and Counts</h3> <p>If you just want the <em>number</em> of vertices or edges in a digraph and don't need a list of them, use <code>count-vertices</code> and <code>count-edges</code>:</p> -<div class="codehilite"><pre><span/><span class="p">(</span><span class="nv">digraph:count-vertices</span> <span class="vg">*d*</span><span class="p">)</span> <span class="c1">; =&gt; 6</span> -<span class="p">(</span><span class="nv">digraph:count-edges</span> <span class="vg">*d*</span><span class="p">)</span> <span class="c1">; =&gt; 5</span> +<div class="codehilite"><pre><span/><span class="p">(</span><span class="nv">digraph:count-vertices</span> <span class="vg">*d*</span><span class="p">)</span> <span class="c1">; => 6</span> +<span class="p">(</span><span class="nv">digraph:count-edges</span> <span class="vg">*d*</span><span class="p">)</span> <span class="c1">; => 5</span> </pre></div> <p>Similarly, if you want to know the number of edges into/out of/involving a vertex use <code>degree</code>, <code>degree-in</code>, and <code>degree-out</code>:</p> -<div class="codehilite"><pre><span/><span class="p">(</span><span class="nv">digraph:predecessors</span> <span class="vg">*d*</span> <span class="ss">'a</span><span class="p">)</span> <span class="c1">; =&gt; ()</span> +<div class="codehilite"><pre><span/><span class="p">(</span><span class="nv">digraph:predecessors</span> <span class="vg">*d*</span> <span class="ss">'a</span><span class="p">)</span> <span class="c1">; => ()</span> <span class="p">(</span><span class="nv">digraph:degree-in</span> <span class="vg">*d*</span> <span class="ss">'a</span><span class="p">)</span> <span class="c1">; = 0</span> -<span class="p">(</span><span class="nv">digraph:successors</span> <span class="vg">*d*</span> <span class="ss">'bar</span><span class="p">)</span> <span class="c1">; =&gt; (bar)</span> -<span class="p">(</span><span class="nv">digraph:degree-out</span> <span class="vg">*d*</span> <span class="ss">'bar</span><span class="p">)</span> <span class="c1">; =&gt; 1</span> +<span class="p">(</span><span class="nv">digraph:successors</span> <span class="vg">*d*</span> <span class="ss">'bar</span><span class="p">)</span> <span class="c1">; => (bar)</span> +<span class="p">(</span><span class="nv">digraph:degree-out</span> <span class="vg">*d*</span> <span class="ss">'bar</span><span class="p">)</span> <span class="c1">; => 1</span> -<span class="p">(</span><span class="nv">digraph:neighbors</span> <span class="vg">*d*</span> <span class="ss">'b</span><span class="p">)</span> <span class="c1">; =&gt; (a d)</span> -<span class="p">(</span><span class="nv">digraph:degree-out</span> <span class="vg">*d*</span> <span class="ss">'b</span><span class="p">)</span> <span class="c1">; =&gt; 2</span> +<span class="p">(</span><span class="nv">digraph:neighbors</span> <span class="vg">*d*</span> <span class="ss">'b</span><span class="p">)</span> <span class="c1">; => (a d)</span> +<span class="p">(</span><span class="nv">digraph:degree-out</span> <span class="vg">*d*</span> <span class="ss">'b</span><span class="p">)</span> <span class="c1">; => 2</span> </pre></div> @@ -334,7 +334,7 @@ <span class="p">(</span><span class="nv">digraph:insert-edge</span> <span class="vg">*d*</span> <span class="ss">'d</span> <span class="ss">'a</span><span class="p">)</span> <span class="c1">; d depends on a</span> <span class="p">(</span><span class="nv">digraph:topological-sort</span> <span class="vg">*d*</span><span class="p">)</span> -<span class="c1">; =&gt; one of</span> +<span class="c1">; => one of</span> <span class="p">(</span><span class="nv">C</span> <span class="nv">B</span> <span class="nv">A</span> <span class="nv">D</span><span class="p">)</span> <span class="p">(</span><span class="nv">B</span> <span class="nv">C</span> <span class="nv">A</span> <span class="nv">D</span><span class="p">)</span> </pre></div>