From 6fb1b26c54cf667dfe3731ee43d1d303230996d8 Mon Sep 17 00:00:00 2001 From: Nathaniel Wesley Filardo Date: Tue, 18 Jun 2013 23:18:12 -0400 Subject: [PATCH] Whoops! Partition rules, then plan as appropriate --- src/Dyna/Main/Driver.hs | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/src/Dyna/Main/Driver.hs b/src/Dyna/Main/Driver.hs index a80c9dd..605629a 100644 --- a/src/Dyna/Main/Driver.hs +++ b/src/Dyna/Main/Driver.hs @@ -350,28 +350,29 @@ processFile fileName = bracket openOut hClose go case dcfg_backend ?dcfg of Backend _ be_b be_c be_ddi be_d -> let + (bcrules,fcrules) = partitionEithers + $ map + (\r -> maybe (p r) + (\fa -> if fa `S.member` gbcs + then Left (fa,r) + else Right r) + $ findHeadFA (r_head r) (r_ucruxes r)) + frs + where + p r = (dynacPanic $ "Can't check rule" + <+> (prettySpanLoc (r_span r)) + <+> "for chaining direction") + initializers = map (\(f,mca) -> either (\e -> Left (f,e)) (\(c,a) -> Right (f,c,a)) mca) - $ map (\x -> (x, planInitializer be_b gbcs x)) frs + $ map (\x -> (x, planInitializer be_b gbcs x)) fcrules cInitializers = rights initializers - uPlans = map (\x -> (x, planEachEval be_b gbcs be_c x)) frs + uPlans = map (\x -> (x, planEachEval be_b gbcs be_c x)) fcrules cuPlans = combineUpdatePlans uPlans - bcrules = MA.mapMaybe (\r -> maybe (p r) - (\fa -> if fa `S.member` gbcs - then Just (fa,r) - else Nothing) - $ findHeadFA (r_head r) (r_ucruxes r)) - $ frs - where - p r = (dynacPanic $ "Can't check rule" - <+> (prettySpanLoc (r_span r)) - <+> "for backchaining: no head") - - qPlans = map (\(fa@(f,a),r) -> (fa,r, planBackchain be_b gbcs (f,mkqm a) r)) bcrules -- 2.50.1