BUG: Unsettled Cycle Prining (was: Announcing E 0.8.4: The Birthday Release)

Mark S. Miller markm@caplet.com
Tue, 01 Jun 1999 02:33:57 -0700


At 05:10 PM 5/27/99 , Tyler Close wrote:
>> 	? def loose := [1, [1, loose, p3], "x"]
>> 	# value: [1, [1, [1, ***CYCLE***, x], <Deferred ref>], x]
>
>I know I'm going to hate myself later for not seeing this right away, but why
>isn't this:
>	#value: [1, [1, ***CYCLE***, <Deferred ref>], x]

[+] Hate me instead, it's a bug.
Thanks!  Somehow, when I saw this, I talked myself into thinking that it was 
correct behavior.  Actually, it is a hard (but not impossible) to fix flaw 
in my printing algorithm.  Since settled cycles do print correctly, and 
unsettled cycles are correct except that they aren't necessarily fully 
wound, I'm not going to fix this right now.  But this bug report hereby notes 
its existence.

Ping, is your bug tracking system ready for prime time?  Are you allowed to 
open source it?

This bug will have to be fixed before we actually have the determinism we 
need, since the degree to which it fails to fully wind the output is 
dependent on implementation issues (Java's ==) below the semantics of E.


>Also, is there any chance string literals could print with the "" still around
>them. This would make cut and paste easier.

[-] Sigh.  Not now, but needs to be revisited.
There are multiple purposes for turning an object structure into a string.  
E confuses these right now, but will need to separate these.  The other 
compelling purpose is indeed to print an expression that can be evaluated to 
yield the original, or perhaps a structure like the original.  Uh oh, more 
distinctions.


	Cheers,
	--MarkM