diff options
author | Vladimir Azarov <avm@intermediate-node.net> | 2025-08-06 05:14:27 +0200 |
---|---|---|
committer | Vladimir Azarov <avm@intermediate-node.net> | 2025-08-06 05:14:27 +0200 |
commit | 3a3220a049b9fef67ca0f85542654ab0a9de0914 (patch) | |
tree | 73a82d2579f74c02fb9a227e66f4ef219d44182f /dynarray.sml | |
parent | a4c60603f61dd1a9f0ce420be9067965586dd694 (diff) |
Most of conversion to il
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 |