diff --git a/pymbolic/mapper/__init__.py b/pymbolic/mapper/__init__.py
index 8aa66ca66fe899813427ca9be132dd2d3f9ffbf7..c5ed972ca94333644f171b6a503d2a643d1cf032 100644
--- a/pymbolic/mapper/__init__.py
+++ b/pymbolic/mapper/__init__.py
@@ -731,6 +731,9 @@ class CachingMapperMixin(object):
     def rec(self, expr):
         try:
             return self.result_cache[expr]
+        except TypeError:
+            # not hashable, oh well
+            return super(CachingMapperMixin, self).rec(expr)
         except KeyError:
             result = super(CachingMapperMixin, self).rec(expr)
             self.result_cache[expr] = result