{-# LANGUAGE TemplateHaskellQuotes #-}
module Data.Patricia.Word.Lazy.TH where
import Data.Patricia.Word.Lazy.Internal
import Language.Haskell.TH.Syntax
sequenceCode :: Quote m => Patricia (Code m a) -> Code m (Patricia a)
sequenceCode :: forall (m :: * -> *) a.
Quote m =>
Patricia (Code m a) -> Code m (Patricia a)
sequenceCode Patricia (Code m a)
t =
case Patricia (Code m a)
t of
Bin Prefix
p Patricia (Code m a)
l Patricia (Code m a)
r ->
[|| Prefix -> Patricia a -> Patricia a -> Patricia a
forall a. Prefix -> Patricia a -> Patricia a -> Patricia a
Bin
Prefix
p
$$(Patricia (Code m a) -> Code m (Patricia a)
forall (m :: * -> *) a.
Quote m =>
Patricia (Code m a) -> Code m (Patricia a)
sequenceCode Patricia (Code m a)
l)
$$(Patricia (Code m a) -> Code m (Patricia a)
forall (m :: * -> *) a.
Quote m =>
Patricia (Code m a) -> Code m (Patricia a)
sequenceCode Patricia (Code m a)
r)
||]
Tip Prefix
k Code m a
a -> [|| Prefix -> a -> Patricia a
forall a. Prefix -> a -> Patricia a
Tip Prefix
k $$(Code m a
a) ||]
Patricia (Code m a)
Nil -> [|| Patricia a
forall a. Patricia a
Nil ||]