packages feed

ptera-th 0.5.0.0 → 0.6.0.0

raw patch · 2 files changed

+19/−8 lines, 2 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

- Language.Parser.Ptera.TH: (<::>) :: TypedExpr rules tokens elem us -> (HTExpList us -> Q (TExp (ActionTask ctx a))) -> AltM ctx rules tokens elem a
+ Language.Parser.Ptera.TH: (<::>) :: T ctx => T a => TypedExpr rules tokens elem us -> (HTExpList us -> Q (TExp (ActionTask ctx a))) -> AltM ctx rules tokens elem a
- Language.Parser.Ptera.TH: (<:>) :: TypedExpr rules tokens elem us -> (HTExpList us -> Q (TExp a)) -> AltM ctx rules tokens elem a
+ Language.Parser.Ptera.TH: (<:>) :: T ctx => T a => TypedExpr rules tokens elem us -> (HTExpList us -> Q (TExp a)) -> AltM ctx rules tokens elem a
- Language.Parser.Ptera.TH.Syntax: (<::>) :: TypedExpr rules tokens elem us -> (HTExpList us -> Q (TExp (ActionTask ctx a))) -> AltM ctx rules tokens elem a
+ Language.Parser.Ptera.TH.Syntax: (<::>) :: T ctx => T a => TypedExpr rules tokens elem us -> (HTExpList us -> Q (TExp (ActionTask ctx a))) -> AltM ctx rules tokens elem a
- Language.Parser.Ptera.TH.Syntax: (<:>) :: TypedExpr rules tokens elem us -> (HTExpList us -> Q (TExp a)) -> AltM ctx rules tokens elem a
+ Language.Parser.Ptera.TH.Syntax: (<:>) :: T ctx => T a => TypedExpr rules tokens elem us -> (HTExpList us -> Q (TExp a)) -> AltM ctx rules tokens elem a
- Language.Parser.Ptera.TH.Syntax: semAct :: (HTExpList us -> Q (TExp a)) -> T TTypeQ us -> SemActM ctx us a
+ Language.Parser.Ptera.TH.Syntax: semAct :: T ctx => T a => (HTExpList us -> Q (TExp a)) -> T TTypeQ us -> SemActM ctx us a
- Language.Parser.Ptera.TH.Syntax: semActM :: (HTExpList us -> Q (TExp (ActionTask ctx a))) -> T TTypeQ us -> SemActM ctx us a
+ Language.Parser.Ptera.TH.Syntax: semActM :: forall ctx us a. T ctx => T a => (HTExpList us -> Q (TExp (ActionTask ctx a))) -> T TTypeQ us -> SemActM ctx us a

Files

ptera-th.cabal view
@@ -2,7 +2,7 @@ build-type:          Custom  name:                ptera-th-version:             0.5.0.0+version:             0.6.0.0 license:             Apache-2.0 OR MPL-2.0 license-file:        LICENSE copyright:           (c) 2021 Mizunashi Mana
src/Language/Parser/Ptera/TH/Syntax.hs view
@@ -104,14 +104,19 @@   (<:>)-    :: TypedExpr rules tokens elem us -> (HTExpList us -> TH.Q (TH.TExp a))+    :: LiftType.T ctx+    => LiftType.T a+    => TypedExpr rules tokens elem us+    -> (HTExpList us -> TH.Q (TH.TExp a))     -> AltM ctx rules tokens elem a e <:> act = unTypedExpr e SafeGrammar.<:> semAct act do getTypesOfExpr e  infixl 4 <:>  (<::>)-    :: TypedExpr rules tokens elem us+    :: LiftType.T ctx+    => LiftType.T a+    => TypedExpr rules tokens elem us     -> (HTExpList us -> TH.Q (TH.TExp (ActionTask ctx a)))     -> AltM ctx rules tokens elem a e <::> act = unTypedExpr e SafeGrammar.<:> semActM act do getTypesOfExpr e@@ -181,24 +186,28 @@  type SemAct = SemActM () -semActM-    :: (HTExpList us -> TH.Q (TH.TExp (Syntax.ActionTask ctx a)))+semActM :: forall ctx us a+    .  LiftType.T ctx+    => LiftType.T a+    => (HTExpList us -> TH.Q (TH.TExp (ActionTask ctx a)))     -> HFList.T TTypeQ us -> SemActM ctx us a semActM f xs0 = UnsafeSemActM go where     go = do         (ns, args) <- actArgs xs0         l <- TH.newName "pteraTHSemActArgs"+        let tqA = LiftType.liftType do Proxy @a+        let tqCtx = LiftType.liftType do Proxy @ctx         let lp = pure do TH.VarP l         let le = pure do TH.VarE l         let lp0 = pure do TH.ListP [TH.VarP n | n <- ns]         [e|\ $(lp) -> case $(le) of             $(lp0) ->-                $(TH.unType <$> f args)+                $(TH.unType <$> f args) :: ActionTask $(tqCtx) $(tqA)             _ ->                 error "unreachable: unexpected arguments"             |] -    actArgs :: HFList.T TTypeQ us -> TH.Q ([TH.Name], HTExpList us)+    actArgs :: HFList.T TTypeQ args -> TH.Q ([TH.Name], HTExpList args)     actArgs = \case         HFList.HFNil ->             pure ([], HNil)@@ -211,6 +220,8 @@             pure (n:ns, arg :* args)  semAct-    :: (HTExpList us -> TH.Q (TH.TExp a))+    :: LiftType.T ctx+    => LiftType.T a+    => (HTExpList us -> TH.Q (TH.TExp a))     -> HFList.T TTypeQ us -> SemActM ctx us a semAct f = semActM do \us -> [||pteraTHActionTaskPure $$(f us)||]