aboutsummaryrefslogtreecommitdiff
path: root/sucl/strat.dcl
diff options
context:
space:
mode:
Diffstat (limited to 'sucl/strat.dcl')
-rw-r--r--sucl/strat.dcl31
1 files changed, 21 insertions, 10 deletions
diff --git a/sucl/strat.dcl b/sucl/strat.dcl
index 341b550..d65972d 100644
--- a/sucl/strat.dcl
+++ b/sucl/strat.dcl
@@ -56,6 +56,17 @@ STRATEGY TRANSFORMERS
The funcions below tranform (simpler) strategies into more complicated ones
------------------------------------------------------------------------ */
+// A strategy transformer that checks for partial applications
+checkarity
+ :: !(sym -> Int) // Arity of function symbol
+ (Strategy sym var .pvar .result) // Default strategy
+ (Substrategy sym var .pvar .result) // Substrategy
+ .(Graph sym var) // Subject graph
+ ((Subspine sym var .pvar) -> .result) // Spine continuation
+ .result // RNF continuation
+ !.(Node sym var) // Subject node
+ -> .result
+
// A strategy transformer that checks for constructor applications
checkconstr
:: (sym->.Bool)
@@ -106,16 +117,16 @@ checkrules
& == var
& == pvar
-// A strategy transformer that checks a type rule
-// for curried applications and strict arguments
-checktype
- :: !(sym -> (Rule .tsym tvar,[.Bool]))
- (Strategy sym var .pvar .result)
- (Substrategy sym var .pvar .result)
- .(Graph sym var)
- ((Subspine sym var .pvar) -> .result)
- .result
- !.(Node sym var)
+// A strategy transformer that checks a function application
+// for strict arguments
+checkstricts
+ :: !(sym -> [.Bool]) // Strict arguments of function
+ (Strategy sym var .pvar .result) // Default strategy
+ (Substrategy sym var .pvar .result) // Substrategy
+ .(Graph sym var) // Subject graph
+ ((Subspine sym var .pvar) -> .result) // Spine continuation
+ .result // RNF continuation
+ !.(Node sym var) // Subject node
-> .result
/* ------------------------------------------------------------------------