@@ -65,6 +65,7 @@ class _SetOperator(object):
6565 def assign_elementary (self , lhs , rhs , evaluation , tags = None , upset = False ):
6666 # TODO: This function should be splitted and simplified
6767
68+ evaluation .cache_result = False
6869 name = lhs .get_head_name ()
6970 lhs ._format_cache = None
7071 condition = None
@@ -547,7 +548,7 @@ class Set(BinaryOperator, _SetOperator):
547548
548549 def apply (self , lhs , rhs , evaluation ):
549550 "lhs_ = rhs_"
550-
551+ evaluation . cache_result = False
551552 self .assign (lhs , rhs , evaluation )
552553 return rhs
553554
@@ -600,7 +601,7 @@ class SetDelayed(Set):
600601
601602 def apply (self , lhs , rhs , evaluation ):
602603 "lhs_ := rhs_"
603-
604+ evaluation . cache_result = False
604605 if self .assign (lhs , rhs , evaluation ):
605606 return Symbol ("Null" )
606607 else :
@@ -648,7 +649,7 @@ class UpSet(BinaryOperator, _SetOperator):
648649
649650 def apply (self , lhs , rhs , evaluation ):
650651 "lhs_ ^= rhs_"
651-
652+ evaluation . cache_result = False
652653 self .assign_elementary (lhs , rhs , evaluation , upset = True )
653654 return rhs
654655
@@ -681,7 +682,7 @@ class UpSetDelayed(UpSet):
681682
682683 def apply (self , lhs , rhs , evaluation ):
683684 "lhs_ ^:= rhs_"
684-
685+ evaluation . cache_result = False
685686 if self .assign_elementary (lhs , rhs , evaluation , upset = True ):
686687 return Symbol ("Null" )
687688 else :
@@ -723,7 +724,7 @@ class TagSet(Builtin, _SetOperator):
723724
724725 def apply (self , f , lhs , rhs , evaluation ):
725726 "f_ /: lhs_ = rhs_"
726-
727+ evaluation . cache_result = False
727728 name = f .get_name ()
728729 if not name :
729730 evaluation .message (self .get_name (), "sym" , f , 1 )
@@ -747,7 +748,7 @@ class TagSetDelayed(TagSet):
747748
748749 def apply (self , f , lhs , rhs , evaluation ):
749750 "f_ /: lhs_ := rhs_"
750-
751+ evaluation . cache_result = False
751752 name = f .get_name ()
752753 if not name :
753754 evaluation .message (self .get_name (), "sym" , f , 1 )
@@ -1240,6 +1241,7 @@ def do_clear(self, definition):
12401241
12411242 def apply (self , symbols , evaluation ):
12421243 "%(name)s[symbols___]"
1244+ evaluation .cache_result = False
12431245 if isinstance (symbols , Symbol ):
12441246 symbols = [symbols ]
12451247 elif isinstance (symbols , Expression ):
@@ -1276,6 +1278,8 @@ def apply(self, symbols, evaluation):
12761278
12771279 def apply_all (self , evaluation ):
12781280 "Clear[System`All]"
1281+ evaluation .cache_result = False
1282+ evaluation .cache_expr = {}
12791283 evaluation .definitions .set_user_definitions ({})
12801284 evaluation .definitions .clear_pymathics_modules ()
12811285 return
@@ -1315,6 +1319,8 @@ def do_clear(self, definition):
13151319
13161320 def apply_all (self , evaluation ):
13171321 "ClearAll[System`All]"
1322+ evaluation .cache_result = False
1323+ evaluation .cache_expr = {}
13181324 evaluation .definitions .set_user_definitions ({})
13191325 evaluation .definitions .clear_pymathics_modules ()
13201326 return
@@ -1403,6 +1409,7 @@ class Unset(PostfixOperator):
14031409
14041410 def apply (self , expr , evaluation ):
14051411 "Unset[expr_]"
1412+ evaluation .cache_result = False
14061413
14071414 name = expr .get_head_name ()
14081415 if name in system_symbols (
@@ -1659,7 +1666,7 @@ class Messages(Builtin):
16591666
16601667 def apply (self , symbol , evaluation ):
16611668 "Messages[symbol_]"
1662-
1669+ evaluation . cache_result = False
16631670 return get_symbol_values (symbol , "Messages" , "messages" , evaluation )
16641671
16651672
@@ -1922,6 +1929,7 @@ class LoadModule(Builtin):
19221929
19231930 def apply (self , module , evaluation ):
19241931 "LoadModule[module_String]"
1932+ evaluation .cache_result = False
19251933 try :
19261934 evaluation .definitions .load_pymathics_module (module .value )
19271935 except PyMathicsLoadException :
0 commit comments