On 27-Jul-1999, Theo Norvell <[EMAIL PROTECTED]> wrote:
> On Tue, 27 Jul 1999, Andreas C. Doering wrote:
> 
> > >> let x=[1..] in x==x 
> > >> would not terminate in the first case but succeed in the second. 
> > > 
> > > But, much worse
> > > 
> > >       let x = (a,b) in x `req` x      = True
> > > but
> > >       (a,b) `req` (a,b)                       = False
> > > 
> > > So referential transparency is lost.  This is a high price to pay.
> > > You are right that *something* is needed; but I don't yet know what.
> 
> One solution is nondeterminism.

Yes.  But we know how to model nondeterminism in a referentially transparent
manner in a pure functional language such as Haskell.  There's no need
to resort to extensions that break referential transparency if all you want
is nondeterminism.

-- 
Fergus Henderson <[EMAIL PROTECTED]>  |  "I have always known that the pursuit
WWW: <http://www.cs.mu.oz.au/~fjh>  |  of excellence is a lethal habit"
PGP: finger [EMAIL PROTECTED]        |     -- the last words of T. S. Garp.


Reply via email to