[comp.lang.prolog] Problems installing SB Prolog 3.0

ferguson@cs.rochester.edu (George Ferguson) (12/02/89)

Apologies to those who consider this inappropriate.

Having found our local CProlog somewhat flakey (at least more so than I
remember at my old site), I decided to try one of the "new and improved"
versions. I ftp'd SB Prolog from arizona.edu and installed it as directed.
All comments pertain to SunOS 4.0.3 on a SparcStation1 (hence my use of
version 3.0 of SB Prolog, right?). Two small comments on the installation
process follow, and then two questions, one long, the second short. Any
help would be appreciated.

1. "errno" is redeclared in file SBP/sim/builtin/other.c.
   -> I just commented out the defintion of errno.

2. Illegal pointer combination warning in file SBP/sin/sub_inst.c (line 69).
   -> I ignored this.

Now these are pretty trivial. The bigger problem is that when I start
the system with

	% SBP/sim/sbprolog SBP/modlib/$readloop

as indicated in the manual, _any_ interaction is accompanied by a number of
error messages "no file for $read_curr_op/3". I have the enviroment variable
SIMPATH set as directed, or at least I think I have.

Entering

	?- load('SBP/modlib/$read_curr_op',v).

results in a flurry of messages like the above, but the call returns "yes"
and the system subsequently performs as expected. (I've forgotten if this
worked without the "v" parameter or what.)

I attempted to remedy this by adding a clause

	$prorc_read_curr_op :-
       		$define_mod($read_curr_op,[read_curr_op/3]),
        	$define_mod($read_curr_op,[$read_curr_op/3]).

to SBP/modlib/src/$prorc.P, adding a call to this in the clause for $prorc/0,
and adding

	$read_curr_op_export([$read_curr_op/3]).

to SBP/modlib/src/$read_curr_op.P. I compiled these, moved them into place,
and restarted sbprolog. The message becomes "no module for $read_curr_op/3"
or something like that. I have no idea whether this was the right thing to
try or not.

** How do I fix the system so $read_curr_op/3 gets defined properly?

Also, I am unable to do

	?- assert(p).

(that is it comes back "no") but have to use

	?- assert((p:-true)).

which while logically true seems stupid. Admittedly I have not RTFM'd deeply
on this.
** Is it really not legitimate syntax?

While I'm at it, while I accept the authors' (of the manual anyway) claim
that "one of the few luxuries afforded to a person giving software away for
free is the ability to take philosophical stances without hurting his wallet,"
I don't understand the decision to "resist the temptation to make assert
less expensive." Surely one of the nice features of Prolog is its ability to
construct and execute data structures as in LISP. Any real AI system using
Prolog is likely to want to build up definitions of predicates, save them,
and then execute them. I rely heavily on assert/retract to implement my
interactive system and any improvement in performance of asserted clauses
would pay off big. Other than that, all I can say is THANK YOU to the people
who provided SB Prolog, problems cited above notwithstanding.

-- 
George Ferguson			ARPA: ferguson@cs.rochester.edu
University of Rochester		UUCP: {decvax,rutgers}!rochester!ferguson
Rochester  NY  14627		VOX:  (716) 275-2527