Subject: [clisp-list] Re: loading and compiling the Knowledge Machine

From: "Hoehle, Joerg-Cyril" <[email-masked]>
Date: Fri Feb 27 09:16:04 2004

Hi,

[Joe Corneli tries to port the Knowledge Machine (KM) package to CLISP]
>> WARNING in function test-val-constraint in lines 9978..10031 :
>> Duplicate case label quote :
>> (case mode ('consistent (km0 `(,val &? (|a| ,@(rest constraint)))))
>>  ('satisfies (km0 `(,val |is| '(|a| ,@(rest constraint))))))

It should be (case mode (consistent ...) (satisfies ...))
It's a bug, probably in KM, maybe depending on macro-expansion mechanisms.
It should be taken seriously unless it's in some test/demo file.
KM will not work properly if it's in the main code.

>> *** - Non-existent directive
My suggestion: CLISP should say "format directive".

>> Current point in control string:
>>   ~a~60vT~a
><http://www.lisp.org/HyperSpec/Body/sec_22-3.html>:
>"In place of a prefix parameter to a directive, V (or v) can be used."
>
>CLISP interprets that "v" must be the only prefix argument.
>others interpret this more leniently.
>please try the appended patch.

I'm sorry. I don't see why CLISP should be patched. I can attach no meaning to 60v. Either 60 is used as a parameter, or v. Parameters are separated using #\,.
So is the above "ignore 60, take v" or "60,v"? (I believe the latter, but who knows)

IMHO, porting KM revealed a bug in KM's code, not in CLISP.

An examples from the CLHS:
"~%Scale factor ~2D: |~13,6,2,VE|": there are 4 parameters, one is "V".
All are separated by commas.

CLISP has a habit and reputation of being strict on semantics, which in the end, helps portability by showing bogus code. Please don't break that.
Please report 1 or 2 bugs to KM instead.

Regards,
	Jorg Hohle.