SHardy@SRI-KL@sri-unix.UUCP (10/17/83)
How does one decide what Bagof or Assert/Retract should do? Recently, I read of a new implementation of Prolog. It had an exciting new lazy evaluation mode. It could outperform DEC-10 Prolog. What is more, it had access to all sorts of good things like screen editors and windows. Unfortunately, its definition of Bagof was ``wrong'', that is didn't agree with the definition of Bagof on the DEC-20. Actually, this doesn't bother me since I think DEC-20 Prolog has it wrong. As Richard says, it depends on what one thinks should happen to calls like: ?- bagof(X, likes(X, Y), LIKERS). Should LIKERS be the bag of all Xs that like anything or should it be the bag of all Xs that like the same thing with failure generating a new set? The interpretation I prefer is the first; it should be the set of all Xs who like anything. I understand how others may disagree with my preference. I don't understand how one could think one interpretation ``objectively'' right and the other wrong. There is just a little Edinburgh imperialism underlying Richard's messages ! -- Steve, Teknowledge PS: it is a mistake to have Assert/Retract modify the behaviour of currently active procedure calls. That's why the Newpay example is so hard in DEC-10 Prolog. The solution is to change DEC-10 Prolog.