From: Sam S. <sd...@gn...> - 2005-01-19 20:31:02
|
> * Bruno Haible <oe...@py...t> [2005-01-19 20:37:56 +0100]: > > Sam wrote: >> > You can concentrate on control.d. >> >> the appended patch fixes 12 out of the 14 eval failures. > > It is not good nevertheless this one should be better: --- control.d 17 Jan 2005 22:24:12 -0500 1.117 +++ control.d 19 Jan 2005 15:20:05 -0500 @@ -457,7 +457,7 @@ } /* store special-declared symbol in stack: */ pushSTACK(specdecl); /* SPECDECL as "value" */ - pushSTACK_symbolwithflags(declsym,wbit(active_bit_o)); /* Symbol active */ + pushSTACK_symbolwithflags(declsym,0); /* Symbol inactive */ check_STACK(); spec_anz++; } > Can you add test cases that exhibit the bugs in your patch? done. >> the remaining 2 bugs are in funcall_iclosure(): >> >> Form: (LET ((X 5)) (PROGV '(X) '(20) ((LAMBDA (&OPTIONAL (X (1+ X)) (Z (1+ >> X))) (DECLARE (SPECIAL X)) Z)))) >> CORRECT: 7 >> CLISP : 22 >> >> Form: (LET ((X 5)) (PROGV '(X) '(20) ((LAMBDA (&OPTIONAL (Y (1+ X)) (Z (1+ >> X))) (DECLARE (SPECIAL X)) Z)))) >> CORRECT: 6 >> CLISP : 21 > > Uuh, this one is a little more complicated to fix, because it probably > requires a modification of get_closure() as well. yeah... I think the order of variables in clos_vars should be reversed: now specials come first, actually, the formal arguments should be first. (so that they will be bound first). > Fixing control.d is the easier first step. done, I hope. > Programs and testsuites behave like elements of a vector space and > its dual space, respectively. Actually, the other way around. Programs are functions on test cases (not testsuites), so test cases are elements of the "base space", and programs belong to the "dual space". There are many more functions on programs than test cases. (i.e., Gelfand's map is not surjective). -- Sam Steingold (http://www.podval.org/~sds) running w2k <http://www.camera.org> <http://www.iris.org.il> <http://www.memri.org/> <http://www.mideasttruth.com/> <http://www.honestreporting.com> Why use Windows, when there are Doors? |