diff options
Diffstat (limited to 'sucl/newfold.icl')
-rw-r--r-- | sucl/newfold.icl | 23 |
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") |