|
@@ -65,11 +65,13 @@ def integer_gt(a, b, **remainder):
|
|
|
raise PrimitiveFinished(result)
|
|
|
|
|
|
def integer_lt(a, b, **remainder):
|
|
|
+ # TODO make non-primitive, though compiled
|
|
|
a_value, b_value = yield [("RV", [a]), ("RV", [b])]
|
|
|
result, = yield [("CNV", [a_value < b_value])]
|
|
|
raise PrimitiveFinished(result)
|
|
|
|
|
|
def integer_neg(a, **remainder):
|
|
|
+ # TODO make non-primitive, though compiled
|
|
|
a_value, = yield [("RV", [a])]
|
|
|
result, = yield [("CNV", [-a_value])]
|
|
|
raise PrimitiveFinished(result)
|
|
@@ -115,11 +117,13 @@ def float_gt(a, b, **remainder):
|
|
|
raise PrimitiveFinished(result)
|
|
|
|
|
|
def float_lt(a, b, **remainder):
|
|
|
+ # TODO make non-primitive, though compiled
|
|
|
a_value, b_value = yield [("RV", [a]), ("RV", [b])]
|
|
|
result, = yield [("CNV", [a_value < b_value])]
|
|
|
raise PrimitiveFinished(result)
|
|
|
|
|
|
def float_neg(a, **remainder):
|
|
|
+ # TODO make non-primitive, though compiled
|
|
|
a_value, = yield [("RV", [a])]
|
|
|
result, = yield [("CNV", [-a_value])]
|
|
|
raise PrimitiveFinished(result)
|
|
@@ -130,6 +134,7 @@ def string_join(a, b, **remainder):
|
|
|
raise PrimitiveFinished(result)
|
|
|
|
|
|
def string_split(a, b, **remainder):
|
|
|
+ # TODO make non-primitive, though compiled
|
|
|
a_value, b_value = yield [("RV", [a]), ("RV", [b])]
|
|
|
result = a_value.split(b_value)
|
|
|
elems = yield [("CN", [])] + [("CNV", [v]) for v in result]
|
|
@@ -153,6 +158,7 @@ def value_eq(a, b, **remainder):
|
|
|
raise PrimitiveFinished(result)
|
|
|
|
|
|
def value_neq(a, b, **remainder):
|
|
|
+ # TODO make non-primitive, though compiled
|
|
|
a_value, b_value = yield [("RV", [a]), ("RV", [b])]
|
|
|
result, = yield [("CNV", [a_value != b_value])]
|
|
|
raise PrimitiveFinished(result)
|
|
@@ -162,6 +168,7 @@ def element_eq(a, b, **remainder):
|
|
|
raise PrimitiveFinished(result)
|
|
|
|
|
|
def element_neq(a, b, **remainder):
|
|
|
+ # TODO make non-primitive, though compiled
|
|
|
result, = yield [("CNV", [a != b])]
|
|
|
raise PrimitiveFinished(result)
|
|
|
|
|
@@ -251,11 +258,13 @@ def cast_id2s(a, **remainder):
|
|
|
raise PrimitiveFinished(result)
|
|
|
|
|
|
def list_append(a, b, **remainder):
|
|
|
+ # TODO make non-primitive, though compiled
|
|
|
a_outgoing, = yield [("RO", [a])]
|
|
|
_ = yield [("CD", [a, len(a_outgoing), b])]
|
|
|
raise PrimitiveFinished(a)
|
|
|
|
|
|
def list_insert(a, b, c, **remainder):
|
|
|
+ # TODO make non-primitive, though compiled
|
|
|
a_outgoing, c_value = yield [("RO", [a]), ("RV", [c])]
|
|
|
links = yield [("RD", [a, i]) for i in range(c_value, len(a_outgoing))] + \
|
|
|
[("RDE", [a, i]) for i in range(c_value, len(a_outgoing))]
|
|
@@ -267,6 +276,7 @@ def list_insert(a, b, c, **remainder):
|
|
|
raise PrimitiveFinished(a)
|
|
|
|
|
|
def list_delete(a, b, **remainder):
|
|
|
+ # TODO make non-primitive, though compiled
|
|
|
a_outgoing, b_value = yield [("RO", [a]), ("RV", [b])]
|
|
|
links = yield [("RD", [a, i]) for i in range(b_value, len(a_outgoing))] + \
|
|
|
[("RDE", [a, i]) for i in range(b_value, len(a_outgoing))]
|
|
@@ -277,6 +287,7 @@ def list_delete(a, b, **remainder):
|
|
|
raise PrimitiveFinished(a)
|
|
|
|
|
|
def list_read(a, b, **remainder):
|
|
|
+ # TODO same as dictionary read
|
|
|
b_value, = yield [("RV", [b])]
|
|
|
result, = yield [("RD", [a, b_value])]
|
|
|
if result is None:
|
|
@@ -284,6 +295,7 @@ def list_read(a, b, **remainder):
|
|
|
raise PrimitiveFinished(result)
|
|
|
|
|
|
def list_len(a, **remainder):
|
|
|
+ # TODO same as read_nr_out
|
|
|
outgoings, = yield [("RO", [a])]
|
|
|
result, = yield [("CNV", [len(outgoings)])]
|
|
|
raise PrimitiveFinished(result)
|
|
@@ -294,6 +306,7 @@ def dict_add(a, b, c, **remainder):
|
|
|
raise PrimitiveFinished(a)
|
|
|
|
|
|
def dict_add_fast(a, b, c, **remainder):
|
|
|
+ # TODO deprecate, as dict_add is now also efficient
|
|
|
v, = yield [("RV", [b])]
|
|
|
yield [("CD", [a, v, c])]
|
|
|
raise PrimitiveFinished(a)
|
|
@@ -343,6 +356,7 @@ def dict_in_node(a, b, **remainder):
|
|
|
raise PrimitiveFinished(result)
|
|
|
|
|
|
def dict_len(a, **remainder):
|
|
|
+ # TODO same as read_nr_out
|
|
|
outgoings, = yield [("RO", [a])]
|
|
|
result, = yield [("CNV", [len(outgoings)])]
|
|
|
raise PrimitiveFinished(result)
|
|
@@ -353,6 +367,7 @@ def dict_keys(a, **remainder):
|
|
|
raise PrimitiveFinished(result)
|
|
|
|
|
|
def dict_reverse(a, b, **remainder):
|
|
|
+ # TODO remove as unused
|
|
|
edges, = yield [("RO", [a])]
|
|
|
expanded_edges, = yield [("RE", [i]) for i in edges]
|
|
|
for i, edge in enumerate(expanded_edges):
|
|
@@ -445,6 +460,8 @@ def read_root(root, **remainder):
|
|
|
raise PrimitiveFinished(root)
|
|
|
|
|
|
def set_add(a, b, **remainder):
|
|
|
+ # TODO make non-primitive, though compiled
|
|
|
+
|
|
|
#yield [("CE", [a, b])]
|
|
|
#raise PrimitiveFinished(a)
|
|
|
|
|
@@ -464,6 +481,7 @@ def set_add(a, b, **remainder):
|
|
|
raise PrimitiveFinished(a)
|
|
|
|
|
|
def set_pop(a, **remainder):
|
|
|
+ # TODO make non-primitive, though compiled
|
|
|
outgoing, = yield [("RO", [a])]
|
|
|
if outgoing:
|
|
|
v, _ = yield [("RE", [outgoing[0]]), ("DE", [outgoing[0]])]
|
|
@@ -487,6 +505,7 @@ def set_remove_node(a, b, **remainder):
|
|
|
raise PrimitiveFinished(a)
|
|
|
|
|
|
def set_in(a, b, **remainder):
|
|
|
+ # TODO make non-primitive, though compiled
|
|
|
outgoing, b_value = yield [("RO", [a]), ("RV", [b])]
|
|
|
if outgoing:
|
|
|
elements = yield [("RE", [i]) for i in outgoing]
|
|
@@ -500,6 +519,7 @@ def set_in(a, b, **remainder):
|
|
|
raise PrimitiveFinished(result)
|
|
|
|
|
|
def set_in_node(a, b, **remainder):
|
|
|
+ # TODO make non-primitive, though compiled
|
|
|
outgoing, = yield [("RO", [a])]
|
|
|
if outgoing:
|
|
|
elements = yield [("RE", [i]) for i in outgoing]
|