module Data.Patricia.Word.Conversion where
import Data.Patricia.Word.Lazy.Internal as Lazy
import Data.Patricia.Word.Strict.Internal as Strict
toLazy :: StrictPatricia a -> LazyPatricia a
toLazy :: forall a. StrictPatricia a -> LazyPatricia a
toLazy StrictPatricia a
t =
case StrictPatricia a
t of
Strict.Bin Prefix
p StrictPatricia a
l StrictPatricia a
r -> Prefix -> LazyPatricia a -> LazyPatricia a -> LazyPatricia a
forall a. Prefix -> Patricia a -> Patricia a -> Patricia a
Lazy.Bin Prefix
p (StrictPatricia a -> LazyPatricia a
forall a. StrictPatricia a -> LazyPatricia a
toLazy StrictPatricia a
l) (StrictPatricia a -> LazyPatricia a
forall a. StrictPatricia a -> LazyPatricia a
toLazy StrictPatricia a
r)
Strict.Tip Prefix
k a
a -> Prefix -> a -> LazyPatricia a
forall a. Prefix -> a -> Patricia a
Lazy.Tip Prefix
k a
a
StrictPatricia a
Strict.Nil -> LazyPatricia a
forall a. Patricia a
Lazy.Nil
toStrict :: LazyPatricia a -> StrictPatricia a
toStrict :: forall a. LazyPatricia a -> StrictPatricia a
toStrict LazyPatricia a
t =
case LazyPatricia a
t of
Lazy.Bin Prefix
p LazyPatricia a
l LazyPatricia a
r -> Prefix -> StrictPatricia a -> StrictPatricia a -> StrictPatricia a
forall a. Prefix -> Patricia a -> Patricia a -> Patricia a
Strict.Bin Prefix
p (LazyPatricia a -> StrictPatricia a
forall a. LazyPatricia a -> StrictPatricia a
toStrict LazyPatricia a
l) (LazyPatricia a -> StrictPatricia a
forall a. LazyPatricia a -> StrictPatricia a
toStrict LazyPatricia a
r)
Lazy.Tip Prefix
k a
a -> Prefix -> a -> StrictPatricia a
forall a. Prefix -> a -> Patricia a
Strict.Tip Prefix
k a
a
LazyPatricia a
Lazy.Nil -> StrictPatricia a
forall a. Patricia a
Strict.Nil