''' In order to debug the problem I'm having with definitions breaking a zipper expression I need to load a system, load the defs into a dictionary, and then run the expression and see if it raises an exception, substituting definitions one-at-a-time until I find the one that breaks it. ''' from joy.library import default_defs, initialize, inscribe, Def from joy.joy import joy from joy.parser import text_to_expression from joy.utils.pretty_print import trace from joy.utils.stack import stack_to_string inscribe(trace) dictionary = initialize() defs = {} default_defs(defs) expression = text_to_expression( '[1 [2 [3 4 25 6] 7] 8]' '[dup mul]' '[dip dip infra dip infra dip infra]' '[[] ccons] step i' ## '[[[] ccons] step i]' ## 'trace' ) for def_name in defs: D = dictionary.copy() D[def_name] = defs[def_name] try: stack, _, d = joy((), expression, D) except: print(def_name, 'failed!') else: print(stack_to_string(stack), def_name, 'pass')