aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sucl/cli.icl4
-rw-r--r--sucl/strat.dcl4
-rw-r--r--sucl/strat.icl11
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)")