@@ -351,7 +351,7 @@ <h1 class="title">Clean object printing by removing extraneous</h1>
351351
352352< div class ="quarto-title-meta-author ">
353353 < div class ="quarto-title-meta-heading "> Author</ div >
354- < div class ="quarto-title-meta-heading "> Affiliations </ div >
354+ < div class ="quarto-title-meta-heading "> Affiliation </ div >
355355
356356 < div class ="quarto-title-meta-contents ">
357357 < p class ="author "> < a href ="https://timothypratley.blogspot.com/p/httpswww.html "> Timothy Pratley</ a > < a href ="mailto:timothypratley@gmail.com " class ="quarto-title-author-email "> < i class ="bi bi-envelope "> </ i > </ a > </ p >
@@ -362,11 +362,6 @@ <h1 class="title">Clean object printing by removing extraneous</h1>
362362 Hummi
363363 </ a >
364364 </ p >
365- < p class ="affiliation ">
366- < a href ="https://scicloj.github.io/ ">
367- Scicloj
368- </ a >
369- </ p >
370365 </ div >
371366 </ div >
372367
@@ -406,20 +401,20 @@ <h1 class="title">Clean object printing by removing extraneous</h1>
406401< 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 >
407402</ div >
408403< 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 "> 0xec824ca </ span > < span class ="st "> "clojure.lang.MultiFn@ec824ca "</ span > ]</ span > </ code > < button title ="Copy to Clipboard " class ="code-copy-button "> < i class ="bi "> </ i > </ button > </ pre > </ div >
404+ < 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 "> 0x2ec5b8 </ span > < span class ="st "> "clojure.lang.MultiFn@2ec5b8 "</ span > ]</ span > </ code > < button title ="Copy to Clipboard " class ="code-copy-button "> < i class ="bi "> </ i > </ button > </ pre > </ div >
410405</ div >
411406< div class ="sourceClojure ">
412407< 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 >
413408</ div >
414409< 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 "> 0x56ec31ca </ span > < span class ="st "> "java.lang.Object@56ec31ca "</ span > ]</ span > </ code > < button title ="Copy to Clipboard " class ="code-copy-button "> < i class ="bi "> </ i > </ button > </ pre > </ div >
410+ < 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 "> 0x54e21540 </ span > < span class ="st "> "java.lang.Object@54e21540 "</ span > ]</ span > </ code > < button title ="Copy to Clipboard " class ="code-copy-button "> < i class ="bi "> </ i > </ button > </ pre > </ div >
416411</ div >
417412< 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 >
418413< div class ="sourceClojure ">
419414< 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 >
420415</ div >
421416< 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 "> 0x1ece307c </ span > < span class ="st "> "clojure.core.async.impl.channels.ManyToManyChannel@1ece307c "</ span > ]</ span > </ code > < button title ="Copy to Clipboard " class ="code-copy-button "> < i class ="bi "> </ i > </ button > </ pre > </ div >
417+ < 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 "> 0x5fa380d9 </ span > < span class ="st "> "clojure.core.async.impl.channels.ManyToManyChannel@5fa380d9 "</ span > ]</ span > </ code > < button title ="Copy to Clipboard " class ="code-copy-button "> < i class ="bi "> </ i > </ button > </ pre > </ div >
423418</ div >
424419< div class ="quarto-figure quarto-figure-center ">
425420< figure class ="figure ">
@@ -432,14 +427,14 @@ <h1 class="title">Clean object printing by removing extraneous</h1>
432427< 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 >
433428</ div >
434429< 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$eval22346$fn__22347 < span class ="bn "> 0x17a3aa29 </ span > < span class ="st "> "clojure.print_object.remove_extraneous$eval22346$fn__22347@17a3aa29 "</ span > ]</ span > </ code > < button title ="Copy to Clipboard " class ="code-copy-button "> < i class ="bi "> </ i > </ button > </ pre > </ div >
430+ < 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$eval22346$fn__22347 < span class ="bn "> 0x380d2312 </ span > < span class ="st "> "clojure.print_object.remove_extraneous$eval22346$fn__22347@380d2312 "</ span > ]</ span > </ code > < button title ="Copy to Clipboard " class ="code-copy-button "> < i class ="bi "> </ i > </ button > </ pre > </ div >
436431</ div >
437432< 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 >
438433< div class ="sourceClojure ">
439434< 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 >
440435</ div >
441436< 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$eval22350$fn__22351$fn__22352 < span class ="bn "> 0x11ad162d </ span > < span class ="st "> "clojure.print_object.remove_extraneous$eval22350$fn__22351$fn__22352@11ad162d "</ span > ]</ span > </ code > < button title ="Copy to Clipboard " class ="code-copy-button "> < i class ="bi "> </ i > </ button > </ pre > </ div >
437+ < 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$eval22350$fn__22351$fn__22352 < span class ="bn "> 0x11ea648d </ span > < span class ="st "> "clojure.print_object.remove_extraneous$eval22350$fn__22351$fn__22352@11ea648d "</ span > ]</ span > </ code > < button title ="Copy to Clipboard " class ="code-copy-button "> < i class ="bi "> </ i > </ button > </ pre > </ div >
443438</ div >
444439< 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 >
445440< div class ="sourceClojure ">
0 commit comments