The problem is in the step combinator definition.
This commit is contained in:
+39
@@ -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')
|
||||
|
||||
Reference in New Issue
Block a user