packages feed

sweet-egison 0.1.1.1 → 0.1.1.2

raw patch · 2 files changed

+26/−1 lines, 2 files

Files

src/Control/Egison/QQ.hs view
@@ -181,6 +181,31 @@                  (VarE 'fromList)                  (AppE (AppE (AppE (VarE cName) (TupE [])) (VarE mName)) (VarE tName))       `sbind_` LamE [TupP []] body+  go (Pat.Pattern cName [p]) mName tName body | isPatVar p = do+    mName' <- newName "tmpM"+    tName' <- newName "tmpT"+    let pp = toPP p+    body' <- go' (p, mName', tName') body+    pure+      $        AppE+                 (VarE 'fromList)+                 (AppE (AppE (AppE (VarE cName) pp) (VarE mName)) (VarE tName))+      `sbind_` LamE [tNameToVar p tName'] body'+  go (Pat.Pattern cName [p]) mName tName body = do+    mName' <- newName "tmpM"+    tName' <- newName "tmpT"+    let pp = toPP p+    body' <- go' (p, mName', tName') body+    pure+      $        let_+                 (mNameToVar p mName')+                 (AppE (AppE (VarE (mkName (show cName ++ "M"))) (VarE mName))+                       (VarE tName)+                 )+      $        AppE+                 (VarE 'fromList)+                 (AppE (AppE (AppE (VarE cName) pp) (VarE mName)) (VarE tName))+      `sbind_` LamE [tNameToVar p tName'] body'   go (Pat.Pattern cName ps) mName tName body | all isPatVar ps = do     mNames <- mapM (\_ -> newName "tmpM") ps     tNames <- mapM (\_ -> newName "tmpT") ps
sweet-egison.cabal view
@@ -1,6 +1,6 @@ cabal-version:      2.0 name:               sweet-egison-version:            0.1.1.1+version:            0.1.1.2 synopsis:   Shallow embedding implementation of non-linear pattern matching