[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:
>"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.