|
@@ -49,6 +49,28 @@ def read_attribute(a, b, c, **remainder):
|
|
|
raise Exception("Error in reading edge!")
|
|
|
"""
|
|
|
|
|
|
+def dict_eq(a, b, **remainder):
|
|
|
+ keys_a, keys_b = yield [("RDK", [a]), ("RDK", [b])]
|
|
|
+ if len(keys_a) != len(keys_b):
|
|
|
+ false, = yield [("CNV", [False])]
|
|
|
+ raise PrimitiveFinished(false)
|
|
|
+
|
|
|
+ resolved_names_a = yield [("RV", [i]) for i in keys_a]
|
|
|
+ resolved_names_b = yield [("RV", [i]) for i in keys_b]
|
|
|
+
|
|
|
+ if (set(resolved_names_a) != set(resolved_names_b)):
|
|
|
+ false, = yield [("CNV", [False])]
|
|
|
+ raise PrimitiveFinished(false)
|
|
|
+
|
|
|
+ values_a = yield [("RD", [a, i]) for i in resolved_names_a]
|
|
|
+ values_b = yield [("RD", [b, i]) for i in resolved_names_b]
|
|
|
+
|
|
|
+ dict_a = dict(zip(resolved_names_a, values_a))
|
|
|
+ dict_b = dict(zip(resolved_names_b, values_b))
|
|
|
+
|
|
|
+ result, = yield [("CNV", [dict_a == dict_b])]
|
|
|
+ raise PrimitiveFinished(result)
|
|
|
+
|
|
|
def set_copy(a, **remainder):
|
|
|
b, = yield [("CN", [])]
|
|
|
links, = yield [("RO", [a])]
|