Re: Remarks on SWI 7
Ulrich Neumerkel <[email protected]>
| Newsgroups | gmane.comp.ai.prolog.swi |
|---|---|
| Message-ID | <[email protected]> |
Richard O'Keefe:
>> A standard that _prescribes_ that length(2,0) should fail silently is
>> something I refuse to take seriously. So yes, it is another issue.
>
>The standard is a living standard. It _does_ get revised.
>If memory serves me correctly, in Quintus Prolog length(2, 0) raised
>an error, I'm pretty sure I added the code to make that happen in
>about 1983. David H. D. Warren, the developer of the first Prolog
>compiler, the inventor of three different VMs for Prolog, all used
>in major systems, and a founder of Quintus, was keen on the
>"totally defined semantics" of Prolog. But Kennita Watson, the
>first technical writer at Quintus, was even keener on the idea that
>she shouldn't get unannounced unpleasant surprises, so that our
>customers wouldn't.
>
>So Kennita taught me to think that having length(2, 0) raise an
>exception is a good idea.
Can we agree the Quintus manual differs?
http://quintus.sics.se/isl/quintus/html/quintus/mpg-ref-length.html
Arguments
List list
a list
Integer integer
non-negative integer
Exceptions
type_error
Integer integer
>I would be happy to see the standard change here, and systems
>change to conform to the revised standard.
It is not part of core, that is ISO/IEC 13211-1, but of the Prolog
prologue.
http://www.complang.tuwien.ac.at/ulrich/iso-prolog/prologue
There have been discussions on it - primarily Lexington and with
unanimous agreement and quite numerours participation, we agreed on no
error for the first argument. And you can see that agreement also by
the very action it ensued in the table: 5 systems conform to it -
fully. But not SWI.
http://www.complang.tuwien.ac.at/ulrich/iso-prolog/length
I wish things would proceed as fast as they did for length/2.
>The standard *is* a living standard and while the standard says
>that this must fail quietly *now*, that's something that *could* be
>changed if a case was made and agreed to. The thing to do is not
>to kick the standard *as a whole* -- and Prolog programmers with it --
>in the slats, but to lobby for a change.
The most effective way of lobbying is conformance. A system that
fully conforms to everything but one very detail is so much more
convincing than a system that misinterprets syntax test 37 times,
rejects 12 tests, and extends the standard in 29 tests. And this is
a version of SWI-Prolog 6. Not SWI 7.
http://www.complang.tuwien.ac.at/ulrich/iso-prolog/conformity_assessment#table
Needless to say, when discussing a missing feature, discussion is
based on those implementations that have already implemented it.
Think of variable_names/1.
http://www.complang.tuwien.ac.at/ulrich/iso-prolog/variable_names
In that case, SWI is one of the very best implementations.
((Glad I have found a good end for this post.))