From b3e94062d6b70534e44e4dea22db44ce9b80ff31 Mon Sep 17 00:00:00 2001 From: Lennart Kramer <lennart.kramer@stud.uni-goettingen.de> Date: Fri, 24 Feb 2023 15:38:53 +0100 Subject: [PATCH] backport cartesian-product fix for 5.44 maxima version The redifinition of cartesian-product is incompatible with newer maxima versions. Since setting the maxima version to an older version would technically be a breaking change, the fix is backported to all older versions where maxima 5.44 is used instead. The changes should also work with older maxima versions. --- .../maxima/rtest_assessment_simpboth.mac | 2 ++ stack/2021010100/maxima/stack_logic.lisp | 16 ++++++++++------ .../maxima/rtest_assessment_simpboth.mac | 2 ++ stack/2021120900/maxima/stack_logic.lisp | 16 ++++++++++------ .../maxima/rtest_assessment_simpboth.mac | 2 ++ stack/2022060100/maxima/stack_logic.lisp | 16 ++++++++++------ .../maxima/rtest_assessment_simpboth.mac | 2 ++ stack/2022071300/maxima/stack_logic.lisp | 16 ++++++++++------ .../maxima/rtest_assessment_simpboth.mac | 2 ++ stack/2022082900/maxima/stack_logic.lisp | 16 ++++++++++------ .../maxima/rtest_assessment_simpboth.mac | 2 ++ stack/2023010400/maxima/stack_logic.lisp | 16 ++++++++++------ 12 files changed, 72 insertions(+), 36 deletions(-) diff --git a/stack/2021010100/maxima/rtest_assessment_simpboth.mac b/stack/2021010100/maxima/rtest_assessment_simpboth.mac index 784cb48..0864edc 100644 --- a/stack/2021010100/maxima/rtest_assessment_simpboth.mac +++ b/stack/2021010100/maxima/rtest_assessment_simpboth.mac @@ -371,3 +371,5 @@ factorlist(-x^2-5*x+6); factorlist(x^3-1); [x-1,x^2+x+1]$ +cartesian_product({1, 2}, {3, 4}); +{[1, 3], [1, 4], [2, 3], [2, 4]}$ diff --git a/stack/2021010100/maxima/stack_logic.lisp b/stack/2021010100/maxima/stack_logic.lisp index 2a1e162..85b0b52 100644 --- a/stack/2021010100/maxima/stack_logic.lisp +++ b/stack/2021010100/maxima/stack_logic.lisp @@ -82,12 +82,16 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defun cartesian-product (l1 l2) - (if l1 - (append - (mapcar #'(lambda (e) (cons (car l1) e)) l2) - (cartesian-product (cdr l1) l2)) - nil)) +; maxima versions >=5.43 have an internal cartesian-product function +; incompatible with this function, therefore we only define it if +; previously undefined +(unless (fboundp 'cartesian-product) + (defun cartesian-product (l1 l2) + (if l1 + (append + (mapcar #'(lambda (e) (cons (car l1) e)) l2) + (cartesian-product (cdr l1) l2)) + nil))) (defun replicate (n e) (if (and (integerp n) (>= n 0)) diff --git a/stack/2021120900/maxima/rtest_assessment_simpboth.mac b/stack/2021120900/maxima/rtest_assessment_simpboth.mac index 51c5b03..ff1f51b 100644 --- a/stack/2021120900/maxima/rtest_assessment_simpboth.mac +++ b/stack/2021120900/maxima/rtest_assessment_simpboth.mac @@ -373,3 +373,5 @@ factorlist(-x^2-5*x+6); factorlist(x^3-1); [x-1,x^2+x+1]$ +cartesian_product({1, 2}, {3, 4}); +{[1, 3], [1, 4], [2, 3], [2, 4]}$ diff --git a/stack/2021120900/maxima/stack_logic.lisp b/stack/2021120900/maxima/stack_logic.lisp index 2a1e162..85b0b52 100644 --- a/stack/2021120900/maxima/stack_logic.lisp +++ b/stack/2021120900/maxima/stack_logic.lisp @@ -82,12 +82,16 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defun cartesian-product (l1 l2) - (if l1 - (append - (mapcar #'(lambda (e) (cons (car l1) e)) l2) - (cartesian-product (cdr l1) l2)) - nil)) +; maxima versions >=5.43 have an internal cartesian-product function +; incompatible with this function, therefore we only define it if +; previously undefined +(unless (fboundp 'cartesian-product) + (defun cartesian-product (l1 l2) + (if l1 + (append + (mapcar #'(lambda (e) (cons (car l1) e)) l2) + (cartesian-product (cdr l1) l2)) + nil))) (defun replicate (n e) (if (and (integerp n) (>= n 0)) diff --git a/stack/2022060100/maxima/rtest_assessment_simpboth.mac b/stack/2022060100/maxima/rtest_assessment_simpboth.mac index 51c5b03..ff1f51b 100644 --- a/stack/2022060100/maxima/rtest_assessment_simpboth.mac +++ b/stack/2022060100/maxima/rtest_assessment_simpboth.mac @@ -373,3 +373,5 @@ factorlist(-x^2-5*x+6); factorlist(x^3-1); [x-1,x^2+x+1]$ +cartesian_product({1, 2}, {3, 4}); +{[1, 3], [1, 4], [2, 3], [2, 4]}$ diff --git a/stack/2022060100/maxima/stack_logic.lisp b/stack/2022060100/maxima/stack_logic.lisp index 2a1e162..85b0b52 100644 --- a/stack/2022060100/maxima/stack_logic.lisp +++ b/stack/2022060100/maxima/stack_logic.lisp @@ -82,12 +82,16 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defun cartesian-product (l1 l2) - (if l1 - (append - (mapcar #'(lambda (e) (cons (car l1) e)) l2) - (cartesian-product (cdr l1) l2)) - nil)) +; maxima versions >=5.43 have an internal cartesian-product function +; incompatible with this function, therefore we only define it if +; previously undefined +(unless (fboundp 'cartesian-product) + (defun cartesian-product (l1 l2) + (if l1 + (append + (mapcar #'(lambda (e) (cons (car l1) e)) l2) + (cartesian-product (cdr l1) l2)) + nil))) (defun replicate (n e) (if (and (integerp n) (>= n 0)) diff --git a/stack/2022071300/maxima/rtest_assessment_simpboth.mac b/stack/2022071300/maxima/rtest_assessment_simpboth.mac index 51c5b03..ff1f51b 100644 --- a/stack/2022071300/maxima/rtest_assessment_simpboth.mac +++ b/stack/2022071300/maxima/rtest_assessment_simpboth.mac @@ -373,3 +373,5 @@ factorlist(-x^2-5*x+6); factorlist(x^3-1); [x-1,x^2+x+1]$ +cartesian_product({1, 2}, {3, 4}); +{[1, 3], [1, 4], [2, 3], [2, 4]}$ diff --git a/stack/2022071300/maxima/stack_logic.lisp b/stack/2022071300/maxima/stack_logic.lisp index 2a1e162..85b0b52 100644 --- a/stack/2022071300/maxima/stack_logic.lisp +++ b/stack/2022071300/maxima/stack_logic.lisp @@ -82,12 +82,16 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defun cartesian-product (l1 l2) - (if l1 - (append - (mapcar #'(lambda (e) (cons (car l1) e)) l2) - (cartesian-product (cdr l1) l2)) - nil)) +; maxima versions >=5.43 have an internal cartesian-product function +; incompatible with this function, therefore we only define it if +; previously undefined +(unless (fboundp 'cartesian-product) + (defun cartesian-product (l1 l2) + (if l1 + (append + (mapcar #'(lambda (e) (cons (car l1) e)) l2) + (cartesian-product (cdr l1) l2)) + nil))) (defun replicate (n e) (if (and (integerp n) (>= n 0)) diff --git a/stack/2022082900/maxima/rtest_assessment_simpboth.mac b/stack/2022082900/maxima/rtest_assessment_simpboth.mac index 51c5b03..ff1f51b 100644 --- a/stack/2022082900/maxima/rtest_assessment_simpboth.mac +++ b/stack/2022082900/maxima/rtest_assessment_simpboth.mac @@ -373,3 +373,5 @@ factorlist(-x^2-5*x+6); factorlist(x^3-1); [x-1,x^2+x+1]$ +cartesian_product({1, 2}, {3, 4}); +{[1, 3], [1, 4], [2, 3], [2, 4]}$ diff --git a/stack/2022082900/maxima/stack_logic.lisp b/stack/2022082900/maxima/stack_logic.lisp index 2a1e162..85b0b52 100644 --- a/stack/2022082900/maxima/stack_logic.lisp +++ b/stack/2022082900/maxima/stack_logic.lisp @@ -82,12 +82,16 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defun cartesian-product (l1 l2) - (if l1 - (append - (mapcar #'(lambda (e) (cons (car l1) e)) l2) - (cartesian-product (cdr l1) l2)) - nil)) +; maxima versions >=5.43 have an internal cartesian-product function +; incompatible with this function, therefore we only define it if +; previously undefined +(unless (fboundp 'cartesian-product) + (defun cartesian-product (l1 l2) + (if l1 + (append + (mapcar #'(lambda (e) (cons (car l1) e)) l2) + (cartesian-product (cdr l1) l2)) + nil))) (defun replicate (n e) (if (and (integerp n) (>= n 0)) diff --git a/stack/2023010400/maxima/rtest_assessment_simpboth.mac b/stack/2023010400/maxima/rtest_assessment_simpboth.mac index 51c5b03..ff1f51b 100644 --- a/stack/2023010400/maxima/rtest_assessment_simpboth.mac +++ b/stack/2023010400/maxima/rtest_assessment_simpboth.mac @@ -373,3 +373,5 @@ factorlist(-x^2-5*x+6); factorlist(x^3-1); [x-1,x^2+x+1]$ +cartesian_product({1, 2}, {3, 4}); +{[1, 3], [1, 4], [2, 3], [2, 4]}$ diff --git a/stack/2023010400/maxima/stack_logic.lisp b/stack/2023010400/maxima/stack_logic.lisp index 2a1e162..85b0b52 100644 --- a/stack/2023010400/maxima/stack_logic.lisp +++ b/stack/2023010400/maxima/stack_logic.lisp @@ -82,12 +82,16 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defun cartesian-product (l1 l2) - (if l1 - (append - (mapcar #'(lambda (e) (cons (car l1) e)) l2) - (cartesian-product (cdr l1) l2)) - nil)) +; maxima versions >=5.43 have an internal cartesian-product function +; incompatible with this function, therefore we only define it if +; previously undefined +(unless (fboundp 'cartesian-product) + (defun cartesian-product (l1 l2) + (if l1 + (append + (mapcar #'(lambda (e) (cons (car l1) e)) l2) + (cartesian-product (cdr l1) l2)) + nil))) (defun replicate (n e) (if (and (integerp n) (>= n 0)) -- GitLab