From: SourceForge.net <no...@so...> - 2005-06-21 16:36:23
|
Bugs item #1224960, was opened at 2005-06-21 18:36 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=104933&aid=1224960&group_id=4933 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Lisp Core Group: Fix for 5.9.2 Status: Open Resolution: None Priority: 5 Submitted By: van_Nek (van_nek) Assigned to: Nobody/Anonymous (nobody) Summary: sideeffect with copylist Initial Comment: (%i1) list:[1,[2,2],3]$ (%i2) copy:copylist(list)$ (%i3) copy[2][2]:42$ (%i4) list; (%o4) [1, [2, 42], 3] ------------------------------------------------------------- Maxima version: 5.9.1 Maxima build date: 7:34 9/24/2004 host type: i686-pc-mingw32 lisp-implementation-type: Kyoto Common Lisp lisp-implementation-version: GCL 2.6.5 ------------------------------------------------------------- I expected copylist to be fully functional. That is not the case. I had a look into comm2.lisp where copylist is defined. copylist uses copy-top-level from maxmac.lisp, which I do not understand, but I have doubts, that copylist does really cons recursively in sublists. The effect is, that for a sublist the full pointer is copied. Volker van Nek ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=104933&aid=1224960&group_id=4933 |
From: SourceForge.net <no...@so...> - 2005-06-25 20:04:39
|
Bugs item #1224960, was opened at 2005-06-21 11:36 Message generated for change (Comment added) made by willisbl You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=104933&aid=1224960&group_id=4933 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Lisp Core Group: Fix for 5.9.2 Status: Open Resolution: None Priority: 5 Submitted By: van_Nek (van_nek) Assigned to: Nobody/Anonymous (nobody) Summary: sideeffect with copylist Initial Comment: (%i1) list:[1,[2,2],3]$ (%i2) copy:copylist(list)$ (%i3) copy[2][2]:42$ (%i4) list; (%o4) [1, [2, 42], 3] ------------------------------------------------------------- Maxima version: 5.9.1 Maxima build date: 7:34 9/24/2004 host type: i686-pc-mingw32 lisp-implementation-type: Kyoto Common Lisp lisp-implementation-version: GCL 2.6.5 ------------------------------------------------------------- I expected copylist to be fully functional. That is not the case. I had a look into comm2.lisp where copylist is defined. copylist uses copy-top-level from maxmac.lisp, which I do not understand, but I have doubts, that copylist does really cons recursively in sublists. The effect is, that for a sublist the full pointer is copied. Volker van Nek ---------------------------------------------------------------------- >Comment By: Barton Willis (willisbl) Date: 2005-06-25 15:04 Message: Logged In: YES user_id=895922 One fix is to replace copy-top-level with copy-tree. (defmfun $copylist (x) (if (not ($listp x)) (merror "argument not a list - copylist:~%~m" x)) (cons (car x) (copy-tree (cdr x)))) I don't know why copylist doesn't just do copy-tree on all of x. A second fix (change the error message too): (defun $copylist (x) (if ($listp x) (copy-tree x) (merror "The argument to 'copylist' must be a list; instead the argument was ~:M" x))) Finally, I don't understand the need for copylist and copymatrix. What's wrong with simply copy (maybe this copy doesn't work with maxima arrays? Anything else?) (defun $copy (x) (copy-tree x)) Barton ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=104933&aid=1224960&group_id=4933 |
From: SourceForge.net <no...@so...> - 2005-08-31 14:49:59
|
Bugs item #1224960, was opened at 2005-06-21 10:36 Message generated for change (Comment added) made by robert_dodier You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=104933&aid=1224960&group_id=4933 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Lisp Core Group: Fix for 5.9.2 Status: Open Resolution: None Priority: 5 Submitted By: van_Nek (van_nek) Assigned to: Nobody/Anonymous (nobody) Summary: sideeffect with copylist Initial Comment: (%i1) list:[1,[2,2],3]$ (%i2) copy:copylist(list)$ (%i3) copy[2][2]:42$ (%i4) list; (%o4) [1, [2, 42], 3] ------------------------------------------------------------- Maxima version: 5.9.1 Maxima build date: 7:34 9/24/2004 host type: i686-pc-mingw32 lisp-implementation-type: Kyoto Common Lisp lisp-implementation-version: GCL 2.6.5 ------------------------------------------------------------- I expected copylist to be fully functional. That is not the case. I had a look into comm2.lisp where copylist is defined. copylist uses copy-top-level from maxmac.lisp, which I do not understand, but I have doubts, that copylist does really cons recursively in sublists. The effect is, that for a sublist the full pointer is copied. Volker van Nek ---------------------------------------------------------------------- >Comment By: Robert Dodier (robert_dodier) Date: 2005-08-31 08:49 Message: Logged In: YES user_id=501686 I agree that copylist and copymatrix should be "deep" copies. The issue that I see is that most Maxima expressions cannot be modified in-place (ignoring Lisp hacking here). Lists and matrices are the only two kinds of expressions which allow in-place modification. So a copy operation can be faster and use less memory if it only actually copies lists and matrices. (I consider faster and less memory a significant issue, as I don't want to rule out the use of Maxima on large problems.) Does copy-tree distinguish lists and matrices from other Maxima expressions? ---------------------------------------------------------------------- Comment By: Barton Willis (willisbl) Date: 2005-06-25 14:04 Message: Logged In: YES user_id=895922 One fix is to replace copy-top-level with copy-tree. (defmfun $copylist (x) (if (not ($listp x)) (merror "argument not a list - copylist:~%~m" x)) (cons (car x) (copy-tree (cdr x)))) I don't know why copylist doesn't just do copy-tree on all of x. A second fix (change the error message too): (defun $copylist (x) (if ($listp x) (copy-tree x) (merror "The argument to 'copylist' must be a list; instead the argument was ~:M" x))) Finally, I don't understand the need for copylist and copymatrix. What's wrong with simply copy (maybe this copy doesn't work with maxima arrays? Anything else?) (defun $copy (x) (copy-tree x)) Barton ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=104933&aid=1224960&group_id=4933 |
From: SourceForge.net <no...@so...> - 2005-08-31 15:07:45
|
Bugs item #1224960, was opened at 2005-06-21 11:36 Message generated for change (Comment added) made by willisbl You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=104933&aid=1224960&group_id=4933 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Lisp Core Group: Fix for 5.9.2 Status: Open Resolution: None Priority: 5 Submitted By: van_Nek (van_nek) Assigned to: Nobody/Anonymous (nobody) Summary: sideeffect with copylist Initial Comment: (%i1) list:[1,[2,2],3]$ (%i2) copy:copylist(list)$ (%i3) copy[2][2]:42$ (%i4) list; (%o4) [1, [2, 42], 3] ------------------------------------------------------------- Maxima version: 5.9.1 Maxima build date: 7:34 9/24/2004 host type: i686-pc-mingw32 lisp-implementation-type: Kyoto Common Lisp lisp-implementation-version: GCL 2.6.5 ------------------------------------------------------------- I expected copylist to be fully functional. That is not the case. I had a look into comm2.lisp where copylist is defined. copylist uses copy-top-level from maxmac.lisp, which I do not understand, but I have doubts, that copylist does really cons recursively in sublists. The effect is, that for a sublist the full pointer is copied. Volker van Nek ---------------------------------------------------------------------- >Comment By: Barton Willis (willisbl) Date: 2005-08-31 10:07 Message: Logged In: YES user_id=895922 The function copy-tree copies any Maxima expression --- whether it matters or not. With my 'copy' function, I suppose some users might think they need to do things like x : copy(y^2) instead of just x : y^2. Maybe we should stick to functions copylist and copymatrix that both call copy-tree. Barton ---------------------------------------------------------------------- Comment By: Robert Dodier (robert_dodier) Date: 2005-08-31 09:49 Message: Logged In: YES user_id=501686 I agree that copylist and copymatrix should be "deep" copies. The issue that I see is that most Maxima expressions cannot be modified in-place (ignoring Lisp hacking here). Lists and matrices are the only two kinds of expressions which allow in-place modification. So a copy operation can be faster and use less memory if it only actually copies lists and matrices. (I consider faster and less memory a significant issue, as I don't want to rule out the use of Maxima on large problems.) Does copy-tree distinguish lists and matrices from other Maxima expressions? ---------------------------------------------------------------------- Comment By: Barton Willis (willisbl) Date: 2005-06-25 15:04 Message: Logged In: YES user_id=895922 One fix is to replace copy-top-level with copy-tree. (defmfun $copylist (x) (if (not ($listp x)) (merror "argument not a list - copylist:~%~m" x)) (cons (car x) (copy-tree (cdr x)))) I don't know why copylist doesn't just do copy-tree on all of x. A second fix (change the error message too): (defun $copylist (x) (if ($listp x) (copy-tree x) (merror "The argument to 'copylist' must be a list; instead the argument was ~:M" x))) Finally, I don't understand the need for copylist and copymatrix. What's wrong with simply copy (maybe this copy doesn't work with maxima arrays? Anything else?) (defun $copy (x) (copy-tree x)) Barton ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=104933&aid=1224960&group_id=4933 |
From: SourceForge.net <no...@so...> - 2005-09-02 05:58:45
|
Bugs item #1224960, was opened at 2005-06-21 10:36 Message generated for change (Comment added) made by robert_dodier You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=104933&aid=1224960&group_id=4933 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Lisp Core >Group: None Status: Open Resolution: None Priority: 5 Submitted By: van_Nek (van_nek) Assigned to: Nobody/Anonymous (nobody) Summary: sideeffect with copylist Initial Comment: (%i1) list:[1,[2,2],3]$ (%i2) copy:copylist(list)$ (%i3) copy[2][2]:42$ (%i4) list; (%o4) [1, [2, 42], 3] ------------------------------------------------------------- Maxima version: 5.9.1 Maxima build date: 7:34 9/24/2004 host type: i686-pc-mingw32 lisp-implementation-type: Kyoto Common Lisp lisp-implementation-version: GCL 2.6.5 ------------------------------------------------------------- I expected copylist to be fully functional. That is not the case. I had a look into comm2.lisp where copylist is defined. copylist uses copy-top-level from maxmac.lisp, which I do not understand, but I have doubts, that copylist does really cons recursively in sublists. The effect is, that for a sublist the full pointer is copied. Volker van Nek ---------------------------------------------------------------------- >Comment By: Robert Dodier (robert_dodier) Date: 2005-09-01 23:58 Message: Logged In: YES user_id=501686 Moving this item out of the category "fix for 5.9.2" since I don't see it as necessary to fix before releasing 5.9.2; there are lot of bugs of similar (moderate) severity. ---------------------------------------------------------------------- Comment By: Barton Willis (willisbl) Date: 2005-08-31 09:07 Message: Logged In: YES user_id=895922 The function copy-tree copies any Maxima expression --- whether it matters or not. With my 'copy' function, I suppose some users might think they need to do things like x : copy(y^2) instead of just x : y^2. Maybe we should stick to functions copylist and copymatrix that both call copy-tree. Barton ---------------------------------------------------------------------- Comment By: Robert Dodier (robert_dodier) Date: 2005-08-31 08:49 Message: Logged In: YES user_id=501686 I agree that copylist and copymatrix should be "deep" copies. The issue that I see is that most Maxima expressions cannot be modified in-place (ignoring Lisp hacking here). Lists and matrices are the only two kinds of expressions which allow in-place modification. So a copy operation can be faster and use less memory if it only actually copies lists and matrices. (I consider faster and less memory a significant issue, as I don't want to rule out the use of Maxima on large problems.) Does copy-tree distinguish lists and matrices from other Maxima expressions? ---------------------------------------------------------------------- Comment By: Barton Willis (willisbl) Date: 2005-06-25 14:04 Message: Logged In: YES user_id=895922 One fix is to replace copy-top-level with copy-tree. (defmfun $copylist (x) (if (not ($listp x)) (merror "argument not a list - copylist:~%~m" x)) (cons (car x) (copy-tree (cdr x)))) I don't know why copylist doesn't just do copy-tree on all of x. A second fix (change the error message too): (defun $copylist (x) (if ($listp x) (copy-tree x) (merror "The argument to 'copylist' must be a list; instead the argument was ~:M" x))) Finally, I don't understand the need for copylist and copymatrix. What's wrong with simply copy (maybe this copy doesn't work with maxima arrays? Anything else?) (defun $copy (x) (copy-tree x)) Barton ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=104933&aid=1224960&group_id=4933 |
From: SourceForge.net <no...@so...> - 2006-04-10 05:45:11
|
Bugs item #1224960, was opened at 2005-06-21 10:36 Message generated for change (Comment added) made by robert_dodier You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=104933&aid=1224960&group_id=4933 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Lisp Core Group: None >Status: Closed >Resolution: Fixed Priority: 5 Submitted By: Volker van Nek (van_nek) Assigned to: Nobody/Anonymous (nobody) Summary: sideeffect with copylist Initial Comment: (%i1) list:[1,[2,2],3]$ (%i2) copy:copylist(list)$ (%i3) copy[2][2]:42$ (%i4) list; (%o4) [1, [2, 42], 3] ------------------------------------------------------------- Maxima version: 5.9.1 Maxima build date: 7:34 9/24/2004 host type: i686-pc-mingw32 lisp-implementation-type: Kyoto Common Lisp lisp-implementation-version: GCL 2.6.5 ------------------------------------------------------------- I expected copylist to be fully functional. That is not the case. I had a look into comm2.lisp where copylist is defined. copylist uses copy-top-level from maxmac.lisp, which I do not understand, but I have doubts, that copylist does really cons recursively in sublists. The effect is, that for a sublist the full pointer is copied. Volker van Nek ---------------------------------------------------------------------- >Comment By: Robert Dodier (robert_dodier) Date: 2006-04-09 23:45 Message: Logged In: YES user_id=501686 $COPYMATRIX, $COPYLIST, and $COPY in src/comm2.lisp all call COPY-TREE now, avoiding side effect. Change was put in place sometime before 5.9.3. Closing this report as fixed. ---------------------------------------------------------------------- Comment By: Robert Dodier (robert_dodier) Date: 2005-09-01 23:58 Message: Logged In: YES user_id=501686 Moving this item out of the category "fix for 5.9.2" since I don't see it as necessary to fix before releasing 5.9.2; there are lot of bugs of similar (moderate) severity. ---------------------------------------------------------------------- Comment By: Barton Willis (willisbl) Date: 2005-08-31 09:07 Message: Logged In: YES user_id=895922 The function copy-tree copies any Maxima expression --- whether it matters or not. With my 'copy' function, I suppose some users might think they need to do things like x : copy(y^2) instead of just x : y^2. Maybe we should stick to functions copylist and copymatrix that both call copy-tree. Barton ---------------------------------------------------------------------- Comment By: Robert Dodier (robert_dodier) Date: 2005-08-31 08:49 Message: Logged In: YES user_id=501686 I agree that copylist and copymatrix should be "deep" copies. The issue that I see is that most Maxima expressions cannot be modified in-place (ignoring Lisp hacking here). Lists and matrices are the only two kinds of expressions which allow in-place modification. So a copy operation can be faster and use less memory if it only actually copies lists and matrices. (I consider faster and less memory a significant issue, as I don't want to rule out the use of Maxima on large problems.) Does copy-tree distinguish lists and matrices from other Maxima expressions? ---------------------------------------------------------------------- Comment By: Barton Willis (willisbl) Date: 2005-06-25 14:04 Message: Logged In: YES user_id=895922 One fix is to replace copy-top-level with copy-tree. (defmfun $copylist (x) (if (not ($listp x)) (merror "argument not a list - copylist:~%~m" x)) (cons (car x) (copy-tree (cdr x)))) I don't know why copylist doesn't just do copy-tree on all of x. A second fix (change the error message too): (defun $copylist (x) (if ($listp x) (copy-tree x) (merror "The argument to 'copylist' must be a list; instead the argument was ~:M" x))) Finally, I don't understand the need for copylist and copymatrix. What's wrong with simply copy (maybe this copy doesn't work with maxima arrays? Anything else?) (defun $copy (x) (copy-tree x)) Barton ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=104933&aid=1224960&group_id=4933 |