On Thu, 9 Aug 2007, [EMAIL PROTECTED] wrote: | Gaby, | | > The routine NEWRULE from metalex.lisp contains the following: | > | > (test Rule1) | > | > That line should read | > | > (test "RULE1") | | I don't know where metalex is used anymore.
If metalex is no longer used, then we should just remove it :-) I'm all for unused Lisp codes that go away. | The meta language was removed years ago and rewritten into lisp. | The zips/meta.tar file is the last remaining evidence. | | I'm not sure I can make a reasonable comment on a change like this. Well, obviously I did not invent the fix from thin air :-) Here is what is happening. I've modifications in a local tree that has all of depsys, interpsys, codes completely compiled! Yes, I remember you said a long time ago that depsys needs to run interpreted because of some macros. I was not convinced for various reasons. The current practice of depsys is only because of poor structure. The first thing to do to get rid of the 'some macros' stonewall is to sequester those macros is a separate file, compile them and load them while compiling functions/files that make use of them. The second thing I did was to wrap COMPILE-FILE to report back to me whether there was FAILURE-P or WARNING-P (Common Lisp semantics). I made bootsys (and other basis Lisps src/lisp) return non-zero exit when FAILURE-P is set, so that Make can stop the build. FAILURE-P means there might be other diagnostic ecept STYLE-WARNING conditions. Then I systematically examine the condition that led to the failure. In this specific case, I was compiling metalex.lisp and bootsys reported back that the variable Rule1 was undefined. Then I looked at the file, what it was trying to do, then eventually trace back to the macro TEST from bootlex.lisp: (defmacro test (x &rest y) `(progn (setq spaderrorstream t) (in-boot) (initialize-preparse *terminal-io*) (,(intern (strconc "PARSE-" x)) . ,y))) which is supposed to call the function PARSE-RULE1 from metameta.lisp. Using type inference, it is "clear" that (strconc "PARSE-" x) works only if x is of type string, thus the fix. Now, if you think the whole metameta stuff can go away, I'm all for it -- though I'm not sure it would work (I haven't tried). | I have no idea what you're thinking about. | I have no idea what bug this causes. | I see no broken-before, fixed-after test cases. It is not true that there is nothing broken. The code is obviously wrong as written since it references a variable that is never defined either statically nor dynamically. Beause hat is simply a typo. | I see no documentation. Tell that to the those who wrote the uncommented stuff. :-) | I see no patch/build/test cycles or evidence of testing. | I see no diff-Naur patch against silver. I leave this up to you and for another time. [...] | You remember the struggles we had trying to decode Martin's code | without documentation? This change is exactly like that. I disagree. I struggled to understand why the compiler is emitting a warning. The struggle is because the *existing code is highly undocumented.* The history of the typo fix is uninteresting tomorrow, or even 30 years from now. Once the typo is fix. The documentation should explain the purpose of the codes and how it does the code, not explain how every single typo was fixed. Can you explain why the existing code is correct as written? -- Gaby _______________________________________________ Axiom-developer mailing list Axiom-developer@nongnu.org http://lists.nongnu.org/mailman/listinfo/axiom-developer