From: Robert D. <rob...@ya...> - 2008-01-21 23:47:49
|
Hello, The Maxima source code contains a number of instances of ((LAMBDA (FOO) ...) ...) which is essentially a pre-CL kind of LET. (A lot of the Maxima source code dates back to the 70's and maybe even some of it to the 60's ....) I find this example works OK in interpreted code but it triggers an error in compiled code. --------- begin w.lisp --------- (defun g (u) (declare (special foo)) (* foo u)) (defun f (x) (declare (special foo)) ((lambda (foo) (g 10)) x)) ---------- end w.lisp ---------- (load "w.lisp") (f 123) => 1230 (compile-file "w.lisp") (load "w.abcl") (f 123) => The variable FOO is unbound. I don't know if that is resolved by recent CVS commits. I haven't updated since I fetched everything 3 days ago. Hope this helps, Robert ____________________________________________________________________________________ Looking for last minute shopping deals? Find them fast with Yahoo! Search. http://tools.search.yahoo.com/newsearch/category.php?category=shopping |
From: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - 2008-01-24 15:08:48
|
On 1/22/08, Robert Dodier <rob...@ya...> wrote: > Hello, > > The Maxima source code contains a number of instances > of ((LAMBDA (FOO) ...) ...) which is essentially a pre-CL > kind of LET. (A lot of the Maxima source code dates back > to the 70's and maybe even some of it to the 60's ....) > > I find this example works OK in interpreted code but > it triggers an error in compiled code. I had a look at this yesterday, but must admit I didn't get too far yet. I *did* notice it's not a problem of (LAMBDA ) in the function position though, because the code below exhibits the same problem: ----- (defun g (u) (declare (special foo)) (* foo u)) (defun f (x) (declare (special foo)) (funcall (lambda (foo) (g 10)) x)) ----- Peter, I noted that - when processing the argument list for a lambda function - the variables are created and pushed onto the list of *visible-variables*. However at that time, there's no match with the *free-special-variables* list to see if those bindings may have been declared special in their environment. Am I on the right track? bye, Erik. |
From: Peter G. <pe...@ar...> - 2008-01-24 16:33:28
|
On Mon, 21 Jan 2008 at 15:47:49 -0800, Robert Dodier wrote: > Hello, > > The Maxima source code contains a number of instances > of ((LAMBDA (FOO) ...) ...) which is essentially a pre-CL > kind of LET. (A lot of the Maxima source code dates back > to the 70's and maybe even some of it to the 60's ....) > > I find this example works OK in interpreted code but > it triggers an error in compiled code. > > --------- begin w.lisp --------- > (defun g (u) > (declare (special foo)) > (* foo u)) > > (defun f (x) > (declare (special foo)) > ((lambda (foo) (g 10)) x)) > ---------- end w.lisp ---------- > > (load "w.lisp") > (f 123) > => 1230 > > (compile-file "w.lisp") > (load "w.abcl") > (f 123) > => The variable FOO is unbound. SBCL, CLISP and OpenMCL report the same error. -Peter |
From: Alan R. <ala...@gm...> - 2008-01-24 16:42:04
|
Funny one. I'm guessing that all the implementations are buggy. This works: (defun f (x) (declare (special foo)) ((lambda (foo) (declare (special foo)) (g 10)) x)) -Alan On Jan 24, 2008, at 11:32 AM, Peter Graves wrote: > On Mon, 21 Jan 2008 at 15:47:49 -0800, Robert Dodier wrote: >> Hello, >> >> The Maxima source code contains a number of instances >> of ((LAMBDA (FOO) ...) ...) which is essentially a pre-CL >> kind of LET. (A lot of the Maxima source code dates back >> to the 70's and maybe even some of it to the 60's ....) >> >> I find this example works OK in interpreted code but >> it triggers an error in compiled code. >> >> --------- begin w.lisp --------- >> (defun g (u) >> (declare (special foo)) >> (* foo u)) >> >> (defun f (x) >> (declare (special foo)) >> ((lambda (foo) (g 10)) x)) >> ---------- end w.lisp ---------- >> >> (load "w.lisp") >> (f 123) >> => 1230 >> >> (compile-file "w.lisp") >> (load "w.abcl") >> (f 123) >> => The variable FOO is unbound. > > SBCL, CLISP and OpenMCL report the same error. > > -Peter > > ---------------------------------------------------------------------- > --- > This SF.net email is sponsored by: Microsoft > Defy all challenges. Microsoft(R) Visual Studio 2008. > http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ > _______________________________________________ > armedbear-j-devel mailing list > arm...@li... > https://lists.sourceforge.net/lists/listinfo/armedbear-j-devel |
From: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - 2008-01-24 19:01:47
|
On Jan 24, 2008 5:32 PM, Peter Graves <pe...@ar...> wrote: > On Mon, 21 Jan 2008 at 15:47:49 -0800, Robert Dodier wrote: > > Hello, > > > > The Maxima source code contains a number of instances > > of ((LAMBDA (FOO) ...) ...) which is essentially a pre-CL > > kind of LET. (A lot of the Maxima source code dates back > > to the 70's and maybe even some of it to the 60's ....) > > > > I find this example works OK in interpreted code but > > it triggers an error in compiled code. > > > > --------- begin w.lisp --------- > > (defun g (u) > > (declare (special foo)) > > (* foo u)) > > > > (defun f (x) > > (declare (special foo)) > > ((lambda (foo) (g 10)) x)) > > ---------- end w.lisp ---------- > > > > (load "w.lisp") > > (f 123) > > => 1230 > > > > (compile-file "w.lisp") > > (load "w.abcl") > > (f 123) > > => The variable FOO is unbound. > > SBCL, CLISP and OpenMCL report the same error. That's strange, because Maxima (CVS) *doesn't* mention *not* working on one of these implementations... bye, Erik. |
From: Robert D. <rob...@ya...> - 2008-01-24 19:44:59
|
--- XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX wrote: > > SBCL, CLISP and OpenMCL report the same error. > > That's strange, because Maxima (CVS) *doesn't* mention *not* working > on one of these implementations... Yeah, Maxima works with all of the above. The example shown was an attempt to distill the actual Maxima problem into a smaller example ... I'll have to try again. best Robert ____________________________________________________________________________________ Looking for last minute shopping deals? Find them fast with Yahoo! Search. http://tools.search.yahoo.com/newsearch/category.php?category=shopping |
From: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - 2008-01-24 20:37:29
|
On Jan 24, 2008 8:44 PM, Robert Dodier <rob...@ya...> wrote: > --- XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX wrote: > > > > SBCL, CLISP and OpenMCL report the same error. > > > > That's strange, because Maxima (CVS) *doesn't* mention *not* working > > on one of these implementations... > > Yeah, Maxima works with all of the above. > The example shown was an attempt to distill the actual > Maxima problem into a smaller example ... I'll have to > try again. No problem. I'll try to compile maxima myself. I'm on Windows. Are you too? If so, how do you compile maxima with abcl? bye, Erik. |
From: Hunter M. <hmo...@hu...> - 2008-01-25 02:11:54
|
To compile maxima under Windows with ABCL follow the standard instructions in INSTALL.lisp, and after compiling/loading type "(run)" to run. Then run_testsuite() will fail although the sourceforge project MaximaJ has a version of the tests commenting out those that crash the suite. Although 3/4 of the test suite passes, there are simple maxima commands such as "sqrt(2);" that cause a stack overflow. Incidentally, ABCL will not compile under windows if there is a space in the path name for instance "C:\Documents and Settings\user..." Hunter > -----Original Message----- > From: arm...@li... > [mailto:arm...@li...] On > Behalf Of XXXXXXXXXXXXXX > Sent: Thursday, January 24, 2008 3:38 PM > To: Robert Dodier > Cc: arm...@li...; Peter Graves > Subject: Re: [j-devel] More fun with LAMBDA > > On Jan 24, 2008 8:44 PM, Robert Dodier > <rob...@ya...> wrote: > > --- XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX wrote: > > > > > > SBCL, CLISP and OpenMCL report the same error. > > > > > > That's strange, because Maxima (CVS) *doesn't* mention > *not* working > > > on one of these implementations... > > > > Yeah, Maxima works with all of the above. > > The example shown was an attempt to distill the actual > Maxima problem > > into a smaller example ... I'll have to try again. > > No problem. I'll try to compile maxima myself. I'm on > Windows. Are you too? If so, how do you compile maxima with abcl? > > bye, > > Erik. > > -------------------------------------------------------------- > ----------- > This SF.net email is sponsored by: Microsoft Defy all > challenges. Microsoft(R) Visual Studio 2008. > http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ > _______________________________________________ > armedbear-j-devel mailing list > arm...@li... > https://lists.sourceforge.net/lists/listinfo/armedbear-j-devel > |
From: Robert D. <rob...@ya...> - 2008-01-25 02:55:13
|
Hi, please try these 2 versions instead. Clisp and SBCL are happy w/ these. Only change is that I put DEFVAR at the top. --- w.lisp --- (defvar foo) (defun g (u) (declare (special foo)) (* foo u)) (defun f (x) (declare (special foo)) ((lambda (foo) (g 10)) x)) -------------- (compile-file "w.lisp") Then quit and restart ABCL. (load "w.abcl") (f 123) => The variable FOO is unbound --- w2.lisp --- (defvar foo 456) (defun g (u) (declare (special foo)) (* foo u)) (defun f (x) (declare (special foo)) ((lambda (foo) (g 10)) x)) --------------- (compile-file "w2.lisp") Then quit and restart ABCL. (load "w2.abcl") (f 123) => 4560 Expected output is 1230 for both programs. ABCL interpreter yields the expected result for both programs. Hope this helps, Robert Dodier ____________________________________________________________________________________ Looking for last minute shopping deals? Find them fast with Yahoo! Search. http://tools.search.yahoo.com/newsearch/category.php?category=shopping |
From: Peter G. <pe...@ar...> - 2008-01-25 11:59:35
|
On Thu, 24 Jan 2008 at 18:55:08 -0800, Robert Dodier wrote: > Hi, please try these 2 versions instead. Clisp and SBCL are > happy w/ these. Only change is that I put DEFVAR at the top. This bug is now fixed in CVS (0.0.10.16). I haven't yet addressed the other bug, that the interpreter fails to signal an error in the case without the DEFVAR. -Peter |