Commit Graph

55 Commits

Author SHA1 Message Date
79a0c95a58 implement another case for 'PersistentVector.merge': merge when right depth is greater than left depth 2026-01-18 06:52:49 +00:00
7b05490812 progress implementing 'PersistentVector.merge' for case where left subtree and right subtree have same depth 2026-01-18 06:40:22 +00:00
66d672505a fix calculation of number to decrement by in 'PersistentVector.delete', after additional test showed that calculation resulted in incorrect metadata. (Todo: just implement function to merge left and right subtrees.) 2026-01-18 00:27:03 +00:00
83bb852ae2 add another test for 'PersistentVector.delete 2026-01-17 23:45:20 +00:00
1c947eab7d add a test for 'PersistentVector.delete' (even though the 'PersistentVector.merge' helper function is unimplemented) 2026-01-17 23:27:36 +00:00
ee58556bde progress implementing 'PersistentVector.delete'. (Todo: implement function to merge left and right vectors.) 2026-01-17 23:14:05 +00:00
b84713a98e add 'PersistentVector.countDepth' function, which is meant to count the depth, and is to be used for deletion 2026-01-17 22:51:06 +00:00
4280f580a2 add function to decrement persistent-vector.sml. (The plan is to split the left and right, and then decrement the right metadata so that the absolute indices match.) 2026-01-17 22:46:08 +00:00
98ec1fbee6 fix another size-recalculation mistake in 'PersistentVector.splitRight' function. (When we are splitting in the middle of a BRANCH, we want to subtract the old child size from the remainder, and then add the new child size to the remainder, because this calculation will account for the splitting of preceding elements.) 2026-01-16 22:40:38 +00:00
e52d4856ee amend recalculation of size metadata in 'PersistentVector.splitRIght: we always want to decrement by prevSize in this function. (We will have another function call to decrement so that left split and right split represent the same absolute indices when they are joined, before they are split.) 2026-01-16 22:31:43 +00:00
ddcb0ea56d finish initial implementation for 'PersistentVector.splitRight' 2026-01-16 22:16:44 +00:00
eb316d7be2 begin implementation of PersistentVector.splitRight function 2026-01-16 21:58:59 +00:00
2058a57026 add functions for testing persistent-vector.sml 2026-01-15 07:16:04 +00:00
559b254b0c initial implementation of 'PersistentVector.splitLeft' function 2026-01-15 06:13:38 +00:00
79fda65f78 begin coding 'PersistentVector.splitLeft' function 2026-01-15 05:51:22 +00:00
267c0c5d96 change persistent-vector.sml's 'prevMatch' function to use rope-like metadata, and remove dead code 2026-01-15 05:39:55 +00:00
d6da7a3ea3 persistent-vector.sml was in a partial state where some functions use rope-like metadata and some functions do not, so change 'nextMatch' function to use rope-like metatadata (still need to change other functions) 2026-01-15 05:25:17 +00:00
1330bcdff9 add a couple of more tests, and revert persistent-vector.sml to how it was before adding rope-like metadata 2025-12-12 10:30:21 +00:00
2f2d530dae fix calculation for delete function (we needed to fix the calculation of how much to decrement by) 2025-12-09 13:10:23 +00:00
7a5aca7bf2 add function in persistent-vector.sml to insert 2025-12-09 12:33:06 +00:00
e6bda83309 begin adding tests for persistent-vector.sml, and add bug fix to 'PersistentVector.delete' in light of one of the tests. (We were decrementing by the wrong value previously, but I fixed it and added a comment of how we arrive at the value we want to decrement by 2025-12-09 11:42:30 +00:00
51bce52ea4 add from/toList conversion functions for testing persistent-vector.sml 2025-12-09 10:44:43 +00:00
cd8958cced implement a function to delete from persistent-vector.sml 2025-12-09 10:31:31 +00:00
69fcbfc35d add function to decrement indices in persistent-vector.sml 2025-12-09 10:07:46 +00:00
d52c350a90 formatting for persistent-vector.sml (absolutely no changes other than formatting) 2025-12-08 22:40:38 +00:00
2ba18a38b0 entirely done with first pass implementing persistent-vector.sml's 'prependJoin' helper function. 2025-12-08 22:37:13 +00:00
0c668c9f14 almost done implementing persistent-vector.sml's 'prependJoin' helper function. (BRANCH case is fully implemented, but I need to implement the LEAF case next.) 2025-12-08 22:23:01 +00:00
b6cad904f9 implement function to join when left has greater depth than right. (I need to implement a function to join when right is greater than left though. 2025-12-08 10:57:00 +00:00
3aab8698ed begin coding function to join two 'PersistentVector.t's. 2025-12-07 04:12:39 +00:00
0650b372b2 complete first pass of implementing 'splitRight' in persistent-vector.sml 2025-12-07 03:43:15 +00:00
3318501c00 in persistent-vector.sml's 'splitRight' function, make sure we decrement the remaining size table that remains after the split. 2025-12-07 03:22:38 +00:00
470d36f82b delete insert function and helper functions in persistent-vector.sml, due to a simpler approach: for insertion, we will split the vector into left and right halves, then append the new element to the left half, then concat both halves together again. This is similar to the approach for RRB trees. 2025-12-06 02:19:42 +00:00
ca5baf8fd7 progress with ''helpInset' function in persistent-vector.sml: BRANCH case is fully implemented, and need to impelement LEAF case next 2025-12-06 00:28:29 +00:00
db459d59ad progress reimplementing 'helpInsert' in persistent-vector.sml by adding a helper function for creating a vector when the current node is split 2025-12-05 18:53:02 +00:00
1f5cf157b1 progress reimplementing 'helpInsert' so that it is aware of rope-like metadata 2025-12-05 13:32:16 +00:00
343951948c begin reimplementing persistent-vector.sml's 'helpInsert' function so that it uses rope-like metadata 2025-12-05 10:11:06 +00:00
237d9f8a38 formatting for fcore/persistent-vector.sml 2025-12-03 11:06:08 +00:00
0625c33bec modify next/prev match functions to index using rope-like metadata 2025-12-03 11:00:02 +00:00
22aa18699e modify PersistentVector.nextMatch and relevant functions so that they index using the roles of rope-like metadata 2025-12-03 10:18:44 +00:00
fde27123cf begin adjusting persistent-vector.sml so that it uses rope-like metadata, meaning relative index offsets to support efficient arbitrary insertion/deletion 2025-12-02 08:53:23 +00:00
6fba536f6f when insert forces persistent-vector.sml to split, distribute half of nodes to left side and half of nodes to right side. (We avoid repeated tiny vectors this way, which reduces tree height and maintains balance.) 2025-12-01 14:24:41 +00:00
328a4e76f1 done implementing 'helpInsert' (both leaf and branch caases)for persistent-vector.sml 2025-12-01 13:51:12 +00:00
17fdeff9ae almost done implementing 'helpInsert' for LEAF case of persistent-vector.sml 2025-12-01 13:40:53 +00:00
94a3d8eeb4 done implementing 'helpInsert' for BRANCH case (need to imlement the LEAF case next) 2025-12-01 13:09:46 +00:00
780aefae34 begin implementing function to insert into PersistentVector.t 2025-12-01 12:24:45 +00:00
70215fbc0a done implementing functionality to get PersistentVector.prevMatch working. We use the call stack to try the node at the previous index if we receive an invalid state from the recursive call. 2025-10-08 11:10:06 +01:00
088c5c3d98 checkpoint while implementing prevMatch functionality 2025-10-08 10:39:49 +01:00
0de7a9278a progress implementing help-prev-match for vector 2025-10-08 10:27:19 +01:00
3b823d7ae6 delete 'nextMatch' function in search-list.sml, and refactor other code to use alternative function 2025-10-08 08:16:20 +01:00
8941ce9f89 reimplement functionality to search forwards using 'n' command 2025-10-08 08:10:51 +01:00