ghc-exactprint-0.3: tests/examples/LiftedInfixConstructor.hs
{-# LANGUAGE DataKinds, TemplateHaskell #-}
applicate :: Bool -> [Stmt] -> ExpQ
applicate rawPatterns stmt = do
return $ foldl (\g e -> VarE '(<**>) `AppE` e `AppE` g)
(VarE 'pure `AppE` f')
es
tuple :: Int -> ExpQ
tuple n = do
ns <- replicateM n (newName "x")
lamE [foldr (\x y -> conP '(:) [varP x,y]) wildP ns] (tupE $ map varE ns)