Basically, I&#39;m just suggesting that the xml package have sensible printing of its structures. I can&#39;t imagine any case where you really want the default printing of recursive structures of that complexity and potential size to be the visible behavior.<br>
<br>Where it was annoying me was in my inference engine when I was doing inference across very large xml documents. I have a trace feature in the inference engine to trace assertions that is very useful for debugging rules. You can imagine the output when I turned it on the first time with one of the large xml documents. Literally, one assertion was 100+ pages.<br>
<br>I&#39;ve pushed a new version of the inference engine that uses ~.s throughout. So, at least it prints it reasonable. But, it is still continually walking the structures and building a huge string (at least 10s of megabytes each at the highest levels). And, it has to do that for every assertion in a trace.<br>
<br>At least I have a large memory machine with plenty of memory (and, thanks to you guys, a 64-bit windows version), so it does run. It&#39;s just annoying.<br><br><div class="gmail_quote">On Mon, Oct 3, 2011 at 4:34 PM, Matthias Felleisen <span dir="ltr">&lt;<a href="mailto:matthias@ccs.neu.edu">matthias@ccs.neu.edu</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><br>
Doug, does this concrete example concerning printing help:<br>
<br>
#lang racket/load<br>
<br>
(module a racket/base<br>
  (struct xml (bar) #:transparent)<br>
<br>
  (define x (xml &quot;bar&quot;))<br>
  (displayln x)<br>
<br>
  (provide (struct-out xml) x))<br>
<br>
(module b racket/base<br>
  (require &#39;a)<br>
<br>
  (struct my xml () #:property prop:custom-write (lambda (x p z) (displayln &quot;&lt;my xml&gt;&quot; p)))<br>
<br>
  (define y (my &quot;bar&quot;))<br>
<br>
  (displayln y))<br>
<br>
(require &#39;b)<br>
<br>
<br>
</blockquote></div><br>