Skip to content

Commit 90f6a42

Browse files
author
Quarto GHA Workflow Runner
committed
Built site for gh-pages
1 parent 5e20777 commit 90f6a42

File tree

17 files changed

+959
-645
lines changed

17 files changed

+959
-645
lines changed

.nojekyll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
a0a9b7e1
1+
ea0e6783

clojure+/print/objects_and_protocols.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -400,20 +400,20 @@ <h1 class="title">Printing Objects and Protocols in Clojure</h1>
400400
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a> (<span class="va">#'clojure.core/print-object</span> x w))</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
401401
</div>
402402
<div class="printedClojure">
403-
<div class="sourceCode" id="cb2"><pre class="sourceCode clojure code-with-copy"><code class="sourceCode clojure"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a>#object[clojure.lang.MultiFn <span class="bn">0x3178857a</span> <span class="st">"clojure.lang.MultiFn@3178857a"</span>]</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
403+
<div class="sourceCode" id="cb2"><pre class="sourceCode clojure code-with-copy"><code class="sourceCode clojure"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a>#object[clojure.lang.MultiFn <span class="bn">0x6ea4c52f</span> <span class="st">"clojure.lang.MultiFn@6ea4c52f"</span>]</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
404404
</div>
405405
<div class="sourceClojure">
406406
<div class="sourceCode" id="cb3"><pre class="sourceCode clojure code-with-copy"><code class="sourceCode clojure"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a>(Object.)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
407407
</div>
408408
<div class="printedClojure">
409-
<div class="sourceCode" id="cb4"><pre class="sourceCode clojure code-with-copy"><code class="sourceCode clojure"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a>#object[java.lang.Object <span class="bn">0x1d551a6d</span> <span class="st">"java.lang.Object@1d551a6d"</span>]</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
409+
<div class="sourceCode" id="cb4"><pre class="sourceCode clojure code-with-copy"><code class="sourceCode clojure"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a>#object[java.lang.Object <span class="bn">0x76a49e02</span> <span class="st">"java.lang.Object@76a49e02"</span>]</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
410410
</div>
411411
<p>The syntax is <code>#object[CLASS-NAME HASH toString())]</code> and as you can see, the toString of an Object is <code>CLASS-NAME@HASH</code>. This can get pretty ugly:</p>
412412
<div class="sourceClojure">
413413
<div class="sourceCode" id="cb5"><pre class="sourceCode clojure code-with-copy"><code class="sourceCode clojure"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a>(async/chan)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
414414
</div>
415415
<div class="printedClojure">
416-
<div class="sourceCode" id="cb6"><pre class="sourceCode clojure code-with-copy"><code class="sourceCode clojure"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true" tabindex="-1"></a>#object[clojure.core.async.impl.channels.ManyToManyChannel <span class="bn">0x685428cc</span> <span class="st">"clojure.core.async.impl.channels.ManyToManyChannel@685428cc"</span>]</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
416+
<div class="sourceCode" id="cb6"><pre class="sourceCode clojure code-with-copy"><code class="sourceCode clojure"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true" tabindex="-1"></a>#object[clojure.core.async.impl.channels.ManyToManyChannel <span class="bn">0x1148b77e</span> <span class="st">"clojure.core.async.impl.channels.ManyToManyChannel@1148b77e"</span>]</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
417417
</div>
418418
<p><a href="https://github.com/tonsky/clojure-plus">clojure-plus</a> provides print-methods to improve printing many things.</p>
419419
<div class="sourceClojure">

clojure/print_object/remove_extraneous.html

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -406,20 +406,20 @@ <h1 class="title">Clean object printing by removing extraneous</h1>
406406
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a> (<span class="va">#'clojure.core/print-object</span> x w))</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
407407
</div>
408408
<div class="printedClojure">
409-
<div class="sourceCode" id="cb2"><pre class="sourceCode clojure code-with-copy"><code class="sourceCode clojure"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a>#object[clojure.lang.MultiFn <span class="bn">0x3178857a</span> <span class="st">"clojure.lang.MultiFn@3178857a"</span>]</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
409+
<div class="sourceCode" id="cb2"><pre class="sourceCode clojure code-with-copy"><code class="sourceCode clojure"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a>#object[clojure.lang.MultiFn <span class="bn">0x6ea4c52f</span> <span class="st">"clojure.lang.MultiFn@6ea4c52f"</span>]</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
410410
</div>
411411
<div class="sourceClojure">
412412
<div class="sourceCode" id="cb3"><pre class="sourceCode clojure code-with-copy"><code class="sourceCode clojure"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a>(Object.)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
413413
</div>
414414
<div class="printedClojure">
415-
<div class="sourceCode" id="cb4"><pre class="sourceCode clojure code-with-copy"><code class="sourceCode clojure"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a>#object[java.lang.Object <span class="bn">0x6ea4c52f</span> <span class="st">"java.lang.Object@6ea4c52f"</span>]</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
415+
<div class="sourceCode" id="cb4"><pre class="sourceCode clojure code-with-copy"><code class="sourceCode clojure"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" tabindex="-1"></a>#object[java.lang.Object <span class="bn">0x113109ef</span> <span class="st">"java.lang.Object@113109ef"</span>]</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
416416
</div>
417417
<p>The syntax is <code>#object[CLASS-NAME HASH toString())]</code> and as you can see, the toString of an Object is <code>CLASS-NAME@HASH</code>. For most objects this becomes quite a long string.</p>
418418
<div class="sourceClojure">
419419
<div class="sourceCode" id="cb5"><pre class="sourceCode clojure code-with-copy"><code class="sourceCode clojure"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a>(async/chan)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
420420
</div>
421421
<div class="printedClojure">
422-
<div class="sourceCode" id="cb6"><pre class="sourceCode clojure code-with-copy"><code class="sourceCode clojure"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true" tabindex="-1"></a>#object[clojure.core.async.impl.channels.ManyToManyChannel <span class="bn">0x5c000a09</span> <span class="st">"clojure.core.async.impl.channels.ManyToManyChannel@5c000a09"</span>]</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
422+
<div class="sourceCode" id="cb6"><pre class="sourceCode clojure code-with-copy"><code class="sourceCode clojure"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true" tabindex="-1"></a>#object[clojure.core.async.impl.channels.ManyToManyChannel <span class="bn">0x4d03d0f5</span> <span class="st">"clojure.core.async.impl.channels.ManyToManyChannel@4d03d0f5"</span>]</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
423423
</div>
424424
<div class="quarto-figure quarto-figure-center">
425425
<figure class="figure">
@@ -432,14 +432,14 @@ <h1 class="title">Clean object printing by removing extraneous</h1>
432432
<div class="sourceCode" id="cb7"><pre class="sourceCode clojure code-with-copy"><code class="sourceCode clojure"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true" tabindex="-1"></a>(<span class="kw">fn</span> [x] x)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
433433
</div>
434434
<div class="printedClojure">
435-
<div class="sourceCode" id="cb8"><pre class="sourceCode clojure code-with-copy"><code class="sourceCode clojure"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" tabindex="-1"></a>#object[clojure.print_object.remove_extraneous$eval45377$fn__45378 <span class="bn">0x56ba373a</span> <span class="st">"clojure.print_object.remove_extraneous$eval45377$fn__45378@56ba373a"</span>]</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
435+
<div class="sourceCode" id="cb8"><pre class="sourceCode clojure code-with-copy"><code class="sourceCode clojure"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" tabindex="-1"></a>#object[clojure.print_object.remove_extraneous$eval45377$fn__45378 <span class="bn">0xd72b444</span> <span class="st">"clojure.print_object.remove_extraneous$eval45377$fn__45378@d72b444"</span>]</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
436436
</div>
437437
<p>It’s quite easy to miss the fact that it is a function as we are looking for a tiny little <code>fn</code> in a sea of text. If, like me, you are fond of the <a href="../../code_interview/beating/with_stupid_stuff/z_combinator_gambit.html">odd lambda calculus excursion</a>, things get even more hectic.</p>
438438
<div class="sourceClojure">
439439
<div class="sourceCode" id="cb9"><pre class="sourceCode clojure code-with-copy"><code class="sourceCode clojure"><span id="cb9-1"><a href="#cb9-1" aria-hidden="true" tabindex="-1"></a>((<span class="kw">fn</span> [x] (<span class="kw">fn</span> [v] ((x x) v))) (<span class="kw">fn</span> [y] y))</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
440440
</div>
441441
<div class="printedClojure">
442-
<div class="sourceCode" id="cb10"><pre class="sourceCode clojure code-with-copy"><code class="sourceCode clojure"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true" tabindex="-1"></a>#object[clojure.print_object.remove_extraneous$eval45381$fn__45382$fn__45383 <span class="bn">0x719a1b36</span> <span class="st">"clojure.print_object.remove_extraneous$eval45381$fn__45382$fn__45383@719a1b36"</span>]</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
442+
<div class="sourceCode" id="cb10"><pre class="sourceCode clojure code-with-copy"><code class="sourceCode clojure"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true" tabindex="-1"></a>#object[clojure.print_object.remove_extraneous$eval45381$fn__45382$fn__45383 <span class="bn">0x672208bb</span> <span class="st">"clojure.print_object.remove_extraneous$eval45381$fn__45382$fn__45383@672208bb"</span>]</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
443443
</div>
444444
<p>Yikes! what an eyesore. This is not an academic issue specific to lambda calculus. Any function created from inside a function is helpfully identifiable through the <code>fn$fn</code> nesting. We create these quite regularly, and they are often printed in stack traces. I’m sure you have seen them when you map an inline function across a seq, and there is a bug in the anonymous function.</p>
445445
<div class="sourceClojure">

clojure/transducers/what_if.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -546,7 +546,7 @@ <h1 class="title">What if… we were taught transducers first?</h1>
546546
<div class="sourceCode" id="cb34"><pre class="sourceCode clojure code-with-copy"><code class="sourceCode clojure"><span id="cb34-1"><a href="#cb34-1" aria-hidden="true" tabindex="-1"></a>(<span class="kw">comp</span> (<span class="kw">filter</span> <span class="kw">even?</span>) (<span class="kw">map</span> <span class="kw">inc</span>))</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
547547
</div>
548548
<div class="printedClojure">
549-
<div class="sourceCode" id="cb35"><pre class="sourceCode clojure code-with-copy"><code class="sourceCode clojure"><span id="cb35-1"><a href="#cb35-1" aria-hidden="true" tabindex="-1"></a>#object[clojure.core$comp$fn__5897 <span class="bn">0x35ae63b6</span> <span class="st">"clojure.core$comp$fn__5897@35ae63b6"</span>]</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
549+
<div class="sourceCode" id="cb35"><pre class="sourceCode clojure code-with-copy"><code class="sourceCode clojure"><span id="cb35-1"><a href="#cb35-1" aria-hidden="true" tabindex="-1"></a>#object[clojure.core$comp$fn__5897 <span class="bn">0x4711ccb7</span> <span class="st">"clojure.core$comp$fn__5897@4711ccb7"</span>]</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
550550
</div>
551551
<p>Let’s give this a name:</p>
552552
<div class="sourceClojure">

code_interview/beating/with_stupid_stuff/z_combinator_gambit.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -507,7 +507,7 @@ <h1 class="title">The Z-Combinator Gambit</h1>
507507
<i class="callout-icon"></i>
508508
</div>
509509
<div class="callout-title-container flex-fill">
510-
class code_interview.beating.with_stupid_stuff.z_combinator_gambit<span class="math inline">\(REV_SINGLEQUOTE_\)</span>fn__70990 cannot be cast to class clojure.lang.IPersistentCollection (code_interview.beating.with_stupid_stuff.z_combinator_gambit<span class="math inline">\(REV_SINGLEQUOTE_\)</span>fn__70990 is in unnamed module of loader clojure.lang.DynamicClassLoader <span class="citation" data-cites="4b15f195">@4b15f195</span>; clojure.lang.IPersistentCollection is in unnamed module of loader ‘app’)
510+
class code_interview.beating.with_stupid_stuff.z_combinator_gambit<span class="math inline">\(REV_SINGLEQUOTE_\)</span>fn__70990 cannot be cast to class clojure.lang.IPersistentCollection (code_interview.beating.with_stupid_stuff.z_combinator_gambit<span class="math inline">\(REV_SINGLEQUOTE_\)</span>fn__70990 is in unnamed module of loader clojure.lang.DynamicClassLoader <span class="citation" data-cites="5ce97be8">@5ce97be8</span>; clojure.lang.IPersistentCollection is in unnamed module of loader ‘app’)
511511
</div>
512512
</div>
513513
<div class="callout-body-container callout-body">
@@ -594,7 +594,7 @@ <h1 class="title">The Z-Combinator Gambit</h1>
594594
<i class="callout-icon"></i>
595595
</div>
596596
<div class="callout-title-container flex-fill">
597-
class code_interview.beating.with_stupid_stuff.z_combinator_gambit<span class="math inline">\(REV_LOGIC\)</span>fn__71000 cannot be cast to class clojure.lang.IPersistentCollection (code_interview.beating.with_stupid_stuff.z_combinator_gambit<span class="math inline">\(REV_LOGIC\)</span>fn__71000 is in unnamed module of loader clojure.lang.DynamicClassLoader <span class="citation" data-cites="38e0f0b7">@38e0f0b7</span>; clojure.lang.IPersistentCollection is in unnamed module of loader ‘app’)
597+
class code_interview.beating.with_stupid_stuff.z_combinator_gambit<span class="math inline">\(REV_LOGIC\)</span>fn__71000 cannot be cast to class clojure.lang.IPersistentCollection (code_interview.beating.with_stupid_stuff.z_combinator_gambit<span class="math inline">\(REV_LOGIC\)</span>fn__71000 is in unnamed module of loader clojure.lang.DynamicClassLoader <span class="citation" data-cites="3a57de2e">@3a57de2e</span>; clojure.lang.IPersistentCollection is in unnamed module of loader ‘app’)
598598
</div>
599599
</div>
600600
<div class="callout-body-container callout-body">

0 commit comments

Comments
 (0)