summaryrefslogtreecommitdiff
path: root/dynarray.sml
diff options
context:
space:
mode:
Diffstat (limited to 'dynarray.sml')
-rw-r--r--dynarray.sml10
1 files changed, 9 insertions, 1 deletions
diff --git a/dynarray.sml b/dynarray.sml
index 371362e..d52f148 100644
--- a/dynarray.sml
+++ b/dynarray.sml
@@ -20,7 +20,7 @@ structure Dynarray: DYNARRAY = struct
case Int.compare (len, Array.length arr) of
EQUAL =>
let
- val arr2 = Array.array (len * 2, NONE)
+ val arr2 = Array.array (len * 2 + 1, NONE)
in
Array.copy { src = arr, dst = arr2, di = 0 };
dynarr := (len, arr2);
@@ -33,6 +33,14 @@ structure Dynarray: DYNARRAY = struct
| GREATER => raise Unreachable
end
+ fun pushAndGetId dynarr v =
+ let
+ val (len, _ ) = !dynarr
+ val () = push dynarr v
+ in
+ len
+ end
+
fun get dynarr n =
let
val (len, arr) = !dynarr