Browse Source

Added some useful operations on lists

Yentl Van Tendeloo 8 years ago
parent
commit
b5591c1f08

+ 2 - 2
bootstrap/primitives.alc

@@ -343,11 +343,11 @@ Void function dict_overwrite(d : Element, key : Element, value : Element):
 
 	return !
 
-Element function set_merge(a : Element, b : Element):
+Void function set_merge(a : Element, b : Element):
 	b = set_copy(b)
 	while (read_nr_out(b) > 0):
 		set_add(a, set_pop(b))
-	return a!
+	return!
 
 Element function make_reverse_dictionary(dict : Element):
 	Element keys

+ 34 - 0
bootstrap/utils.alc

@@ -75,3 +75,37 @@ Element function input_timeout(timeout : Float):
 			sleep(0.01)
 
 	return read_root()!
+
+Element function list_reverse(lst : Element):
+	Element result
+	result = create_node()
+
+	Integer i
+	i = list_len(lst)
+	while (i > 0):
+		list_append(result, list_read(lst, i))
+		i = i - 1
+
+	return result!
+
+Element function list_splice(lst : Element, start : Integer, end : Integer):
+	Element result
+	result = create_node()
+
+	Integer i
+	i = start
+	while (i <= end):
+		list_append(result, list_read(lst, i))
+		i = i + 1
+
+	return result!
+
+Element function list_extend(lst : Element, ext : Element):
+	Integer i
+	i = 0
+
+	while (i < list_len(ext)):
+		list_append(lst, list_read(ext, i))
+		i = i + 1
+
+	return lst!

+ 1 - 1
interface/HUTN/includes/primitives.alh

@@ -108,5 +108,5 @@ Element function dict_copy(dict : Element)
 Element function set_to_list(s : Element)
 Element function create_tuple(a : Element, b : Element)
 Void function dict_overwrite(a : Element, b : Element, c : Element)
-Element function set_merge(sa : Element, sb : Element)
+Void function set_merge(sa : Element, sb : Element)
 Element function make_reverse_dictionary(dict : Element)

+ 3 - 0
interface/HUTN/includes/utils.alh

@@ -1,2 +1,5 @@
 String function JSON_print(model : Element)
 Element function input_timeout(timeout : Float)
+Element function list_reverse(lst : Element)
+Element function list_splice(lst : Element, start : Integer, end : Integer)
+Element function list_extend(lst : Element, ext : Element)