[comp.lang.prolog] Thanks for the sour persimmons cousins

lagache@violet.berkeley.edu (Edouard Lagache) (09/29/87)

     Well I am certainly glad that at least someone went to the trouble of
     actually reading my PROLOG library code (on second thought, maybe it
     would have been better otherwise ....)

     To be quite honest, I thought that nit-pickers were only to be found in
     model railroading and other "precision" hobbies, but I guess the PROLOG
     net has its own set, and regrettably, I didn't put a "no nit-picking"
     sign on my documentation.

     So on to the nit-picks:  First, the highly optimal code of Lee Naish
     i.e.

               merge([],[],[]).
               merge(Head1.Tail1, Head2.Tail2, Head1.Head2.R) :-
                         merge(Tail1,Tail2,R).

     does not run on the A.D.A. VML PROLOG interpreter.  It complains about
     finding "unexpected period on line 2".  While I believe the dot
     notation for cons cells is part of the original language specification,
     it isn't mentioned in Clocksin and Mellish, and thus, is missing from
     at least one PROLOG implementation.

     As to the complaints on '!,fail' clauses.  I too am fully aware that
     they are redundant.  However, what a computer can easily deduce from
     the code, may be difficult for humans to discern, particularly for
     those new to PROLOG.  While A.I. researchers seem determined to make
     their code as cryptic as possible, the rest of the programming world is
     still in the midst of a "readability revolution".  Given the terseness
     of some of the code touted as "improvements" over my work, it may be
     time for some people on this net to go back and take a course in
     structured Pascal!

     Finally, there were a number of important comments that I will keep and
     attempt to implement after I complete my Master's Thesis this fall.  I
     am not a PROLOG guru, and never claimed that I was.  Nor was I aware of
     what other sorts of public domain PROLOG libraries already existed.

     My entire objective was to produce a clean, well documented package of
     basic predicates in order to save other programmers from having to re-
     invent the wheel.  With the help of everyone on the net, these
     libraries can be made optimal, and the documentation can be made both
     more readable and accurate.  However, unless people take a more
     constructive and less antagonistic attitude toward contributions, not
     only will these libraries die of neglect, but people will simply not
     contribute valuable materials to avoid the grief that I have had the
     pleasure of enduring!


                                   Edouard Lagache
                                   School of Education
                                   U.C. Berkeley
                                   lagache@violet.berkeley.edu