[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: More on Full Specification




	Date: Wed, 15 Jun 88 13:59:06 EST
	From: Robert Hieb <hieb@iuvax.cs.indiana.edu>
	To: rrrs-authors@mc.lcs.mit.edu
	Subject: More on Full Specification
	
	
	I think the current ``arbitrary permutation'' in the semantics
	is terrible, since it really doesn't reflect the intent, 
	which I understand to be that procedure calls may be evaluated in 
	different orders within the same program, and perhaps even 
	concurrently.
	
No, not concurrently.  E*, in the semantics, always evaluates in *some* order.
This isn't overspecification, as Paul Hudak suggests, but rather a deliberate
and desirable design decision.  If we could get DAYS-AFTER-J2000.0 into the
denotational semantics our problems with PERMUTE would be gone--we could make
it truely POM-dependent.

	such uses as
	    (define x (car y))
	cannot really be considered invalid, 

No one called it invalid, just bad style.

	and something like
	    (define y (z))
	    (define x (car y))
	looks perfectly reasonable, given that all other expressions in a body
	are evaluated in order.
	
This can also be made to work by having LETREC's implement an applicative
order fixpoint rather than the restriction of it specified in R3RS.  This 
amounts to performing dependency analysis to transform the above into a LET*.
Alas, this requires static analysis which an interpreter can't afford.  Some
compilers, however, already do it.

Eric