From 12569d59cb548c15094d11b2a1cc1bd36ebe4895 Mon Sep 17 00:00:00 2001
From: Andreas Kloeckner <inform@tiker.net>
Date: Fri, 23 Sep 2022 15:02:57 -0500
Subject: [PATCH] Don't flatten in IdentityMapper

---
 pymbolic/mapper/__init__.py | 12 ++----------
 1 file changed, 2 insertions(+), 10 deletions(-)

diff --git a/pymbolic/mapper/__init__.py b/pymbolic/mapper/__init__.py
index bac3b58..0b59c97 100644
--- a/pymbolic/mapper/__init__.py
+++ b/pymbolic/mapper/__init__.py
@@ -500,17 +500,9 @@ class IdentityMapper(Mapper):
                 for child, orig_child in zip(children, expr.children)):
             return expr
 
-        from pymbolic.primitives import flattened_sum
-        return flattened_sum(children)
-
-    def map_product(self, expr, *args, **kwargs):
-        children = [self.rec(child, *args, **kwargs) for child in expr.children]
-        if all(child is orig_child
-                for child, orig_child in zip(children, expr.children)):
-            return expr
+        return type(expr)(tuple(children))
 
-        from pymbolic.primitives import flattened_product
-        return flattened_product(children)
+    map_product = map_sum
 
     def map_quotient(self, expr, *args, **kwargs):
         numerator = self.rec(expr.numerator, *args, **kwargs)
-- 
GitLab