Skip to content
Snippets Groups Projects
Commit c2feee5d authored by Hans-Peter Deifel's avatar Hans-Peter Deifel
Browse files

SumBag: Implement conversion to and from lists

This is used in the Eq instance and also makes debugging and testing easier.
parent fb7a40c2
No related branches found
No related tags found
No related merge requests found
......@@ -8,6 +8,8 @@ module Data.SumBag
, insert
, delete
, elem
, toAscList
, fromList
) where
import Prelude hiding (sum, min, elem)
......@@ -79,6 +81,17 @@ delete a (Node _ e left right)
let (min, rest) = delmin right
in balance1 min left rest
toAscList :: Ord a => SumBag a -> [a]
toAscList bag = helper bag []
where helper Leaf accu = accu
helper (Node _ e left right) accu =
helper left (mkList e ++ helper right accu)
mkList (Element val mult) = map (const val) (NE.toList mult)
fromList :: (Ord a, Monoid a) => [a] -> SumBag a
fromList = foldr insert empty
-- Internal functions
-- | "Smart" constructor for Node. Will compute the meta data from its subtrees
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment