From be4a3d6e1600a590253de802d6a506e287879180 Mon Sep 17 00:00:00 2001 From: Simon Forman Date: Thu, 25 Nov 2021 17:38:01 -0800 Subject: [PATCH] The problem is in the step combinator definition. --- debugger.out | 115 +++++++++++++++++++++++++++++++++++++++++++++++++++ debugger.py | 39 +++++++++++++++++ 2 files changed, 154 insertions(+) create mode 100644 debugger.out create mode 100644 debugger.py diff --git a/debugger.out b/debugger.out new file mode 100644 index 0000000..a42dfcb --- /dev/null +++ b/debugger.out @@ -0,0 +1,115 @@ +[1 [2 [3 4 625 6] 7] 8] -- pass +[1 [2 [3 4 625 6] 7] 8] ? pass +[1 [2 [3 4 625 6] 7] 8] && pass +[1 [2 [3 4 625 6] 7] 8] ++ pass +[1 [2 [3 4 625 6] 7] 8] || pass +[1 [2 [3 4 625 6] 7] 8] !- pass +[1 [2 [3 4 625 6] 7] 8] <{} pass +[1 [2 [3 4 625 6] 7] 8] <<{} pass +[1 [2 [3 4 625 6] 7] 8] abs pass +[1 [2 [3 4 625 6] 7] 8] anamorphism pass +[1 [2 [3 4 625 6] 7] 8] app1 pass +[1 [2 [3 4 625 6] 7] 8] app2 pass +[1 [2 [3 4 625 6] 7] 8] app3 pass +[1 [2 [3 4 625 6] 7] 8] appN pass +[1 [2 [3 4 625 6] 7] 8] at pass +[1 [2 [3 4 625 6] 7] 8] average pass +[1 [2 [3 4 625 6] 7] 8] b pass +[1 [2 [3 4 625 6] 7] 8] binary pass +[1 [2 [3 4 625 6] 7] 8] ccccons pass +[1 [2 [3 4 625 6] 7] 8] ccons pass +[1 [2 [3 4 625 6] 7] 8] clear pass +[1 [2 [3 4 625 6] 7] 8] cleave pass +[1 [2 [3 4 625 6] 7] 8] clop pass +[1 [2 [3 4 625 6] 7] 8] codi pass +[1 [2 [3 4 625 6] 7] 8] codireco pass +[1 [2 [3 4 625 6] 7] 8] dinfrirst pass +[1 [2 [3 4 625 6] 7] 8] dipd pass +[1 [2 [3 4 625 6] 7] 8] disenstacken pass +[1 [2 [3 4 625 6] 7] 8] down_to_zero pass +[1 [2 [3 4 625 6] 7] 8] drop pass +[1 [2 [3 4 625 6] 7] 8] dupd pass +[1 [2 [3 4 625 6] 7] 8] dupdd pass +[1 [2 [3 4 625 6] 7] 8] dupdip pass +[1 [2 [3 4 625 6] 7] 8] dupdipd pass +[1 [2 [3 4 625 6] 7] 8] enstacken pass +[1 [2 [3 4 625 6] 7] 8] flatten pass +[1 [2 [3 4 625 6] 7] 8] fork pass +[1 [2 [3 4 625 6] 7] 8] fourth pass +[1 [2 [3 4 625 6] 7] 8] gcd pass +[1 [2 [3 4 625 6] 7] 8] genrec pass +[1 [2 [3 4 625 6] 7] 8] grabN pass +[1 [2 [3 4 625 6] 7] 8] grba pass +[1 [2 [3 4 625 6] 7] 8] hypot pass +[1 [2 [3 4 625 6] 7] 8] ifte pass +[1 [2 [3 4 625 6] 7] 8] ii pass +[1 [2 [3 4 625 6] 7] 8] infra pass +[1 [2 [3 4 625 6] 7] 8] infrst pass +[1 [2 [3 4 625 6] 7] 8] make_generator pass +[1 [2 [3 4 625 6] 7] 8] mod pass +[1 [2 [3 4 625 6] 7] 8] neg pass +[1 [2 [3 4 625 6] 7] 8] not pass +[1 [2 [3 4 625 6] 7] 8] nulco pass +[1 [2 [3 4 625 6] 7] 8] nullary pass +[1 [2 [3 4 625 6] 7] 8] of pass +[1 [2 [3 4 625 6] 7] 8] pam pass +[1 [2 [3 4 625 6] 7] 8] pm pass +[1 [2 [3 4 625 6] 7] 8] popd pass +[1 [2 [3 4 625 6] 7] 8] popdd pass +[1 [2 [3 4 625 6] 7] 8] popop pass +[1 [2 [3 4 625 6] 7] 8] popopop pass +[1 [2 [3 4 625 6] 7] 8] popopd pass +[1 [2 [3 4 625 6] 7] 8] popopdd pass +[1 [2 [3 4 625 6] 7] 8] product pass +[1 [2 [3 4 625 6] 7] 8] quoted pass +[1 [2 [3 4 625 6] 7] 8] range pass +[1 [2 [3 4 625 6] 7] 8] range_to_zero pass +[1 [2 [3 4 625 6] 7] 8] reco pass +[1 [2 [3 4 625 6] 7] 8] rest pass +[1 [2 [3 4 625 6] 7] 8] reverse pass +[1 [2 [3 4 625 6] 7] 8] roll> pass +[1 [2 [3 4 625 6] 7] 8] roll< pass +[1 [2 [3 4 625 6] 7] 8] rollup pass +[1 [2 [3 4 625 6] 7] 8] rolldown pass +[1 [2 [3 4 625 6] 7] 8] rrest pass +[1 [2 [3 4 625 6] 7] 8] run pass +[1 [2 [3 4 625 6] 7] 8] second pass +[1 [2 [3 4 625 6] 7] 8] shift pass +[1 [2 [3 4 625 6] 7] 8] shunt pass +[1 [2 [3 4 625 6] 7] 8] size pass +[1 [2 [3 4 625 6] 7] 8] spiral_next pass +[1 [2 [3 4 625 6] 7] 8] split_at pass +[1 [2 [3 4 625 6] 7] 8] split_list pass +[1 [2 [3 4 625 6] 7] 8] sqr pass +[1 [2 [3 4 625 6] 7] 8] stackd pass +[1 [2 [3 4 625 6] 7] 8] step_zero pass +[1 [2 [3 4 625 6] 7] 8] sum pass +[1 [2 [3 4 625 6] 7] 8] swapd pass +[1 [2 [3 4 625 6] 7] 8] swons pass +[1 [2 [3 4 625 6] 7] 8] swoncat pass +[1 [2 [3 4 625 6] 7] 8] tailrec pass +[1 [2 [3 4 625 6] 7] 8] take pass +[1 [2 [3 4 625 6] 7] 8] ternary pass +[1 [2 [3 4 625 6] 7] 8] third pass +[1 [2 [3 4 625 6] 7] 8] tuck pass +[1 [2 [3 4 625 6] 7] 8] unary pass +[1 [2 [3 4 625 6] 7] 8] uncons pass +[1 [2 [3 4 625 6] 7] 8] unit pass +[1 [2 [3 4 625 6] 7] 8] unquoted pass +[1 [2 [3 4 625 6] 7] 8] unswons pass +[1 [2 [3 4 625 6] 7] 8] while pass +[1 [2 [3 4 625 6] 7] 8] x pass +step failed! +[1 [2 [3 4 625 6] 7] 8] _step0 pass +[1 [2 [3 4 625 6] 7] 8] _step1 pass +[1 [2 [3 4 625 6] 7] 8] _stept pass +[1 [2 [3 4 625 6] 7] 8] times pass +[1 [2 [3 4 625 6] 7] 8] _times0 pass +[1 [2 [3 4 625 6] 7] 8] _times1 pass +[1 [2 [3 4 625 6] 7] 8] _timest pass +[1 [2 [3 4 625 6] 7] 8] map pass +[1 [2 [3 4 625 6] 7] 8] _map? pass +[1 [2 [3 4 625 6] 7] 8] _mape pass +[1 [2 [3 4 625 6] 7] 8] _map0 pass +[1 [2 [3 4 625 6] 7] 8] _map1 pass +[1 [2 [3 4 625 6] 7] 8] _map2 pass diff --git a/debugger.py b/debugger.py new file mode 100644 index 0000000..69ca506 --- /dev/null +++ b/debugger.py @@ -0,0 +1,39 @@ +''' +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') +