]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/persistent/hashtables/nodes/bitmap/bitmap.factor
update existing code for [let change
[factor.git] / basis / persistent / hashtables / nodes / bitmap / bitmap.factor
index 4c764eba9331d2bbdfeeb407e41758b054a51ccd..eb8533c186b15557c3059ce31063c896badc13bc 100644 (file)
@@ -10,77 +10,71 @@ IN: persistent.hashtables.nodes.bitmap
 : index ( bit bitmap -- n ) [ 1 - ] dip bitand bit-count ; inline
 
 M:: bitmap-node (entry-at) ( key hashcode bitmap-node -- entry )
-    [let* | shift [ bitmap-node shift>> ]
-            bit [ hashcode shift bitpos ]
-            bitmap [ bitmap-node bitmap>> ]
-            nodes [ bitmap-node nodes>> ] |
-       bitmap bit bitand 0 eq? [ f ] [
-           key hashcode
-           bit bitmap index nodes nth-unsafe
-           (entry-at)
-        ] if
-    ] ;
+    bitmap-node shift>> :> shift
+    hashcode shift bitpos :> bit
+    bitmap-node bitmap>> :> bitmap
+    bitmap-node nodes>> :> nodes
+    bitmap bit bitand 0 eq? [ f ] [
+        key hashcode
+        bit bitmap index nodes nth-unsafe
+        (entry-at)
+    ] if ;
 
 M:: bitmap-node (new-at) ( shift value key hashcode bitmap-node -- node' added-leaf )
-    [let* | shift [ bitmap-node shift>> ]
-            bit [ hashcode shift bitpos ]
-            bitmap [ bitmap-node bitmap>> ]
-            idx [ bit bitmap index ]
-            nodes [ bitmap-node nodes>> ] |
-        bitmap bit bitand 0 eq? [
-            [let | new-leaf [ value key hashcode <leaf-node> ] |
-                bitmap bit bitor
-                new-leaf idx nodes insert-nth
+    bitmap-node shift>> :> shift
+    hashcode shift bitpos :> bit
+    bitmap-node bitmap>> :> bitmap
+    bit bitmap index :> idx
+    bitmap-node nodes>> :> nodes
+
+    bitmap bit bitand 0 eq? [
+        value key hashcode <leaf-node> :> new-leaf
+        bitmap bit bitor
+        new-leaf idx nodes insert-nth
+        shift
+        <bitmap-node>
+        new-leaf
+    ] [
+        idx nodes nth :> n
+            shift radix-bits + value key hashcode n (new-at) :> new-leaf :> n'
+            n n' eq? [
+                bitmap-node
+            ] [
+                bitmap
+                n' idx nodes new-nth
                 shift
                 <bitmap-node>
-                new-leaf
-            ]
-        ] [
-            [let | n [ idx nodes nth ] |
-                shift radix-bits + value key hashcode n (new-at)
-                [let | new-leaf [ ] n' [ ] |
-                    n n' eq? [
-                        bitmap-node
-                    ] [
-                        bitmap
-                        n' idx nodes new-nth
-                        shift
-                        <bitmap-node>
-                    ] if
-                    new-leaf
-                ]
-            ]
-        ] if
-    ] ;
+            ] if
+            new-leaf
+        ]
+    ] if ;
 
 M:: bitmap-node (pluck-at) ( key hashcode bitmap-node -- node' )
-    [let | bit [ hashcode bitmap-node shift>> bitpos ]
-           bitmap [ bitmap-node bitmap>> ]
-           nodes [ bitmap-node nodes>> ]
-           shift [ bitmap-node shift>> ] |
-           bit bitmap bitand 0 eq? [ bitmap-node ] [
-            [let* | idx [ bit bitmap index ]
-                    n [ idx nodes nth-unsafe ]
-                    n' [ key hashcode n (pluck-at) ] |
-                n n' eq? [
-                    bitmap-node
-                ] [
-                    n' [
-                        bitmap
-                        n' idx nodes new-nth
-                        shift
-                        <bitmap-node>
-                    ] [
-                        bitmap bit eq? [ f ] [
-                            bitmap bit bitnot bitand
-                            idx nodes remove-nth
-                            shift
-                            <bitmap-node>
-                        ] if
-                    ] if
+    hashcode bitmap-node shift>> bitpos :> bit
+    bitmap-node bitmap>> :> bitmap
+    bitmap-node nodes>> :> nodes
+    bitmap-node shift>> :> shift
+    bit bitmap bitand 0 eq? [ bitmap-node ] [
+        bit bitmap index :> idx
+        idx nodes nth-unsafe :> n
+        key hashcode n (pluck-at) :> n'
+        n n' eq? [
+            bitmap-node
+        ] [
+            n' [
+                bitmap
+                n' idx nodes new-nth
+                shift
+                <bitmap-node>
+            ] [
+                bitmap bit eq? [ f ] [
+                    bitmap bit bitnot bitand
+                    idx nodes remove-nth
+                    shift
+                    <bitmap-node>
                 ] if
-            ]
+            ] if
         ] if
-    ] ;
+    ] if ;
 
 M: bitmap-node >alist% ( node -- ) nodes>> >alist-each% ;