aboutsummaryrefslogtreecommitdiff
path: root/sucl/newfold.icl
diff options
context:
space:
mode:
Diffstat (limited to 'sucl/newfold.icl')
-rw-r--r--sucl/newfold.icl23
1 files changed, 13 insertions, 10 deletions
diff --git a/sucl/newfold.icl b/sucl/newfold.icl
index f84f710..de55a0a 100644
--- a/sucl/newfold.icl
+++ b/sucl/newfold.icl
@@ -345,16 +345,19 @@ newextract ::
newextract trc newname (Trace stricts rule answer history transf)
| recursive
= (stricts,[recrule],recareas)
-= subex transf
- where subex (Reduce reductroot trace) = newextract trc newname trace
- subex (Annotate trace) = newextract trc newname trace
- subex (Instantiate yestrace notrace)
- = (stricts,yesrules++norules,yesareas++noareas)
- where (yesstricts,yesrules,yesareas) = newextract trc newname yestrace
- (nostricts,norules,noareas) = newextract trc newname notrace
- subex Stop = (stricts,[mkrule rargs rroot stoprgraph],stopareas)
-
- (recursive,unsafearea)
+= case transf
+ of Reduce reductroot trace
+ -> newextract trc newname trace
+ Annotate trace
+ -> newextract trc newname trace
+ Instantiate yestrace notrace
+ -> (stricts,yesrules++norules,yesareas++noareas)
+ where (yesstricts,yesrules,yesareas) = newextract trc newname yestrace
+ (nostricts,norules,noareas) = newextract trc newname notrace
+ Stop
+ -> (stricts,[mkrule rargs rroot stoprgraph],stopareas)
+
+ where (recursive,unsafearea)
= if (isreduce transf)
(foldoptional (False,undef) (findspinepart rule transf) answer)
(False,abort "newextract: not a Reduce transformation")