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 +25/−0
- sweet-egison.cabal +1/−1
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