From p.singleton@keele.ac.uk  Mon Jan 24 17:39:12 2000
Received: from cmailg3.svr.pol.co.uk (cmailg3.svr.pol.co.uk [195.92.195.173])
	by swi.psy.uva.nl (8.9.3/8.9.3) with ESMTP id RAA16047
	for <prolog@swi.psy.uva.nl>; Mon, 24 Jan 2000 17:39:12 +0100 (MET)
Received: from modem4294967215.folklore.dialup.pol.co.uk ([195.92.5.209] helo=keele.ac.uk)
	by cmailg3.svr.pol.co.uk with esmtp (Exim 3.13 #0)
	id 12CmWI-0002YD-00; Mon, 24 Jan 2000 16:39:14 +0000
Message-ID: <388C7E17.B9949EA0@keele.ac.uk>
Date: Mon, 24 Jan 2000 16:30:15 +0000
From: Paul Singleton <p.singleton@keele.ac.uk>
Organization: SmartArts Computing Consultancy
X-Mailer: Mozilla 4.7 [en] (WinNT; I)
X-Accept-Language: en
MIME-Version: 1.0
To: "Richard A. O'Keefe" <ok@hermes.otago.ac.nz>
CC: SWI Prolog <prolog@swi.psy.uva.nl>
Subject: Re: [Fwd: abolish/1 in 3.3.0]
References: <200001240120.OAA24009@hermes.otago.ac.nz>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

"Richard A. O'Keefe" wrote:

> So it was obvious that the "right" primitive was string streams.

Hey Presto.  I think some reasoning has been omitted here, which
is a pity 'cos I'd want to quibble with it :-)

Streams are not Prolog-like; you cannot backtrack over get/2, and
you cannot directly parse a stream.  In fact, you cannot directly
do anything Prolog-like to a stream.

I suggest that the "right" primitive is lazily-evaluated lists of
characters (whether codes or single-character atoms: we can argue
about that in another thread :-)

Jan: (while we're negotiating hooks :-) is it feasible to denote a
list by a special type of variable which has an associated
generator, and to invoke this generator whenever an attempted
unification needs to know more about it (i.e. whether it's empty,
and if not, what its first element is)?

I'm guessing that a multi-threaded kernel is necessary (in which
case string streams were the best "wrong" primitive for Quintus at
the time :-)

Paul Singleton

