Rename to splitRoot. Add the same for Sets and expose it.
authorRyan Newton <rrnewton@gmail.com>
Tue, 3 Dec 2013 04:27:44 +0000 (23:27 -0500)
committerRyan Newton <rrnewton@gmail.com>
Tue, 3 Dec 2013 04:27:44 +0000 (23:27 -0500)
Data/Map/Base.hs
Data/Map/Lazy.hs
Data/Map/Strict.hs
Data/Set.hs
Data/Set/Base.hs

index 4767a1d..cafd7d5 100644 (file)
@@ -211,6 +211,7 @@ module Data.Map.Base (
 
     , split
     , splitLookup
+    , splitRoot
 
     -- * Submap
     , isSubmapOf, isSubmapOfBy
@@ -258,7 +259,6 @@ module Data.Map.Base (
     , trim
     , trimLookupLo
     , foldlStrict
-    , splitTree
     , MaybeS(..)
     , filterGt
     , filterLt
@@ -2816,15 +2816,13 @@ foldlStrict f = go
 {-# INLINE foldlStrict #-}
 
 
--- | /O(1)/.  Decompose a Map into pieces, based on the structure of the underlying
--- tree.  No guarantee is made as to the sizes of the pieces: an internal, but
--- deterministic process determines this.  This is most useful for consuming a Map in
+-- | /O(1)/.  Decompose a map into pieces, based on the structure of the underlying
+-- tree.  No guarantee is made as to the sizes of the pieces; an internal, but
+-- deterministic process determines this.  This is most useful for consuming a map in
 -- parallel.
-splitTree :: Map k b -> [Map k b]
-splitTree orig =
+splitRoot :: Map k b -> [Map k b]
+splitRoot orig =
   case orig of 
     Tip           -> []
-    Bin 1 k v l r -> [singleton k v, l, r]
-{-# INLINE splitTree #-}
-
-
+    Bin _ k v l r -> [singleton k v, l, r]
+{-# INLINE splitRoot #-}
index 98d9232..119b6a0 100644 (file)
@@ -171,6 +171,7 @@ module Data.Map.Lazy (
 
     , split
     , splitLookup
+    , splitRoot
 
     -- * Submap
     , isSubmapOf, isSubmapOfBy
index 64b47fc..75a29c8 100644 (file)
@@ -178,6 +178,7 @@ module Data.Map.Strict
 
     , split
     , splitLookup
+    , splitRoot
 
     -- * Submap
     , isSubmapOf, isSubmapOfBy
index f9397ce..5f1d918 100644 (file)
@@ -80,6 +80,7 @@ module Data.Set (
             , partition
             , split
             , splitMember
+            , splitRoot
 
             -- * Indexed
             , lookupIndex
index d902310..37c0ffa 100644 (file)
@@ -126,6 +126,7 @@ module Data.Set.Base (
             , partition
             , split
             , splitMember
+            , splitRoot
 
             -- * Indexed
             , lookupIndex
@@ -173,12 +174,12 @@ module Data.Set.Base (
             , showTree
             , showTreeWith
             , valid
-
+              
             -- Internals (for testing)
             , bin
             , balanced
             , link
-            , merge
+            , merge              
             ) where
 
 import Prelude hiding (filter,foldl,foldr,null,map)
@@ -1404,6 +1405,18 @@ foldlStrict f = go
     go z (x:xs) = let z' = f z x in z' `seq` go z' xs
 {-# INLINE foldlStrict #-}
 
+-- | /O(1)/.  Decompose a set into pieces, based on the structure of the underlying
+-- tree.  No guarantee is made as to the sizes of the pieces; an internal, but
+-- deterministic process determines this.  This is most useful for consuming a set in
+-- parallel.
+splitRoot :: Set a -> [Set a]
+splitRoot orig =
+  case orig of 
+    Tip           -> []
+    Bin _ v l r -> [singleton v, l, r]
+{-# INLINE splitRoot #-}
+
+
 {--------------------------------------------------------------------
   Debugging
 --------------------------------------------------------------------}