-- | -- TH utils. module Hasql.TH where import Hasql.Prelude import Language.Haskell.TH applicativeE :: Exp -> [Exp] -> Exp applicativeE head = \case [] -> error "Empty expressions list" exps -> reduce $ head : VarE '(<$>) : intersperse (VarE '(<*>)) exps where reduce = \case e : o : t -> UInfixE e o (reduce t) e : [] -> e _ -> $bug $ "Unexpected queue size. Exps: " <> show exps purify :: Q a -> a purify = unsafePerformIO . runQ