diff options
-rw-r--r-- | sucl/cli.icl | 4 | ||||
-rw-r--r-- | sucl/strat.dcl | 4 | ||||
-rw-r--r-- | sucl/strat.icl | 11 |
3 files changed, 12 insertions, 7 deletions
diff --git a/sucl/cli.icl b/sucl/cli.icl index e7b3634..e7981c5 100644 --- a/sucl/cli.icl +++ b/sucl/cli.icl @@ -164,7 +164,9 @@ clistrategy (CliAlias {arities=as,typeconstructors=tcs,typerules=ts,rules=rs}) m o checklaws cleanlaws // Checks for special (hard coded) rules (+x0=x /y1=y ...) o checkrules matchable (foldmap id [] rs) // Checks normal rewrite rules o checkimport islocal // Checks for delta symbols - o checkconstr (flip isMember (flatten (map snd tcs))) // Checks for constructors + o ( checkconstr toString (flip isMember (flatten (map snd tcs))) // Checks for constructors + ---> ("cli.clistrategy.checkconstr",tcs) + ) ) (corestrategy matchable) // Checks rules for symbols in the language core (IF, _AP, ...) where islocal rsym=:(SuclUser s) = isMember rsym (map fst rs)// User-defined symbols can be imported, so they're known if we have a list of rules for them islocal rsym = True // Symbols in the language core (the rest) are always completely known diff --git a/sucl/strat.dcl b/sucl/strat.dcl index c397013..c2b6ce6 100644 --- a/sucl/strat.dcl +++ b/sucl/strat.dcl @@ -8,6 +8,7 @@ from rule import Rule from graph import Graph,Node from StdOverloaded import == from StdClass import Eq +from cleanversion import String from history import HistoryAssociation,HistoryPattern,Link // for History from spine import Spine // for Answer @@ -71,7 +72,8 @@ checkarity // A strategy transformer that checks for constructor applications checkconstr - :: (sym->.Bool) + :: (sym->String) + (sym->.Bool) (Strategy sym var pvar .result) (Substrategy sym var pvar .result) (Graph sym var) diff --git a/sucl/strat.icl b/sucl/strat.icl index b8500e8..71956d1 100644 --- a/sucl/strat.icl +++ b/sucl/strat.icl @@ -470,7 +470,8 @@ checkimport local defstrat substrat subject found rnf (ssym,sargs) // Check for constructors checkconstr - :: (sym->.Bool) + :: (sym->String) + (sym->.Bool) (Strategy sym var pvar .result) (Substrategy sym var pvar .result) (Graph sym var) @@ -479,7 +480,7 @@ checkconstr .(Node sym var) -> .result -checkconstr isconstr defstrat substrat subject found rnf (ssym,sargs) -| isconstr ssym -= rnf -= defstrat substrat subject found rnf (ssym,sargs) +checkconstr showsym isconstr defstrat substrat subject found rnf (ssym,sargs) +| isconstr ssym ---> ("strat.checkconstr begins for "+++showsym ssym) += rnf <--- ("strat.checkconstr ends (RNF)") += defstrat substrat subject found rnf (ssym,sargs) <--- ("strat.checkconstr ends (default strategy)") |