diff options
Diffstat (limited to 'dynarray.sml')
-rw-r--r-- | dynarray.sml | 10 |
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 |