@@ -1788,21 +1788,6 @@ mapKeys f = fromList . foldrWithKey (\k x xs -> (f k, x) : xs) []
17881788difference  ::  Eq k  =>  HashMap  k  v  ->  HashMap  k  w  ->  HashMap  k  v 
17891789difference =  go 0 
17901790  where 
1791- {-  Somehow we get repeated "cases of" on the Hashmap arguments:
1792- 
1793-         $wgo1 
1794-           = \ (ww :: Int#) (ds :: HashMap k v) (ds1 :: HashMap k w) -> 
1795-               case ds of wild { 
1796-                 __DEFAULT -> 
1797-                   case ds1 of wild1 { 
1798-                     __DEFAULT -> 
1799-                       case wild of wild2 { 
1800-                         BitmapIndexed bx bx1 -> 
1801-                           case wild1 of { 
1802-                             BitmapIndexed bx2 bx3 -> 
1803- 
1804- Or maybe this helps avoid more evaluations later on? (Check Cmm) 
1805- -} 
18061791    go ! _s Empty  _ =  Empty 
18071792    go s t1@ (Leaf  h1 (L  k1 _)) t2
18081793      =  lookupCont (\ _ ->  t1) (\ _ _ ->  Empty ) h1 k1 s t2
@@ -1856,14 +1841,12 @@ Or maybe this helps avoid more evaluations later on? (Check Cmm)
18561841              |  otherwise  ->  Full  (updateFullArray ary1 i st')
18571842      where  i =  index h2 s
18581843
1859-     --  TODO: Why does $wdifferenceCollisions appear three times in the Core
1860-     --  for difference, and not just once?
18611844    go _ t1@ (Collision  h1 ary1) (Collision  h2 ary2)
18621845      =  differenceCollisions h1 ary1 t1 h2 ary2
18631846
18641847    differenceArrays ! s ! b1 ! ary1 t1 ! b2 ! ary2
18651848      |  b1 .&.  b2 ==  0  =  t1
1866-       |  {-  b1 == b2 &&  -}   A. unsafeSameArray ary1 ary2 =  Empty 
1849+       |  A. unsafeSameArray ary1 ary2 =  Empty 
18671850      |  otherwise  =  runST $  do 
18681851        mary <-  A. new_ $  A. length  ary1
18691852
@@ -1916,7 +1899,6 @@ Or maybe this helps avoid more evaluations later on? (Check Cmm)
19161899differenceCollisions  ::  Eq k  =>  Hash  ->  A. ArrayLeaf  k  v1 ) ->  HashMap  k  v1  ->  Hash  ->  A. ArrayLeaf  k  v2 ) ->  HashMap  k  v1 
19171900differenceCollisions ! h1 ! ary1 t1 ! h2 ! ary2
19181901  |  h1 ==  h2 = 
1919-     --  TODO: This actually allocates Maybes!
19201902    let  ary =  A. filter  (\ (L  k1 _) ->  isNothing (indexOf k1 ary2)) ary1
19211903    in  case  A. length  ary of 
19221904      0  ->  Empty 
0 commit comments