aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzweije2001-07-11 14:04:31 +0000
committerzweije2001-07-11 14:04:31 +0000
commit0c6546d6274e6926571e0e222276e85e1b47cb37 (patch)
tree32d4264477319ea09f32757fa05e561080f7d688
parentThis commit was generated by cvs2svn to compensate for changes in r530, (diff)
This commit was generated by cvs2svn to compensate for changes in r534,
which included commits to RCS files with non-trunk default branches. git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@535 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d
-rw-r--r--sucl/basic.dcl4
-rw-r--r--sucl/basic.icl20
-rw-r--r--sucl/loop.icl5
-rw-r--r--sucl/spine.dcl2
-rw-r--r--sucl/strat.icl5
5 files changed, 21 insertions, 15 deletions
diff --git a/sucl/basic.dcl b/sucl/basic.dcl
index 664f5fd..b288043 100644
--- a/sucl/basic.dcl
+++ b/sucl/basic.dcl
@@ -14,6 +14,7 @@ Basic types and functions.
*/
+from general import Optional
import StdOverloaded
import StdString
@@ -26,7 +27,8 @@ Implementation
// The optional type of type t is a type like t
// where the actual t value may be present or absent.
-:: Optional t = Absent | Present t
+//:: Optional t = Absent | Present t
+//Now using Optional from cocl's general module
// Adjust a function for a single argument
diff --git a/sucl/basic.icl b/sucl/basic.icl
index 40588fe..86770b5 100644
--- a/sucl/basic.icl
+++ b/sucl/basic.icl
@@ -23,7 +23,9 @@ Implementation
*/
-:: Optional t = Absent | Present t
+//:: Optional t = Absent | Present t
+// Now using Optional type from cocl's general module
+from general import Optional,No,Yes
// Adjust a function for a single argument
@@ -91,8 +93,8 @@ foldmap f d
where foldmap` (x,y) g v = if (x==v) (f y) (g v)
foldoptional :: .res .(.t -> .res) !(Optional .t) -> .res
-foldoptional absent present Absent = absent
-foldoptional absent present (Present x) = present x
+foldoptional no yes No = no
+foldoptional no yes (Yes x) = yes x
forget :: val -> .(![.(val,res)] -> .[(val,res)]) | == val
forget x = filter (neq x o fst)
@@ -161,8 +163,8 @@ power n f
= f o power (n-1) f
printoptional :: .(.t -> String) !(Optional .t) -> String
-printoptional printa Absent = ""
-printoptional printa (Present a) = printa a
+printoptional printa No = ""
+printoptional printa (Yes a) = printa a
proc :: .((w:elem -> .(.res -> .res)) -> v:(![w:elem] -> u:(.res -> .res))), [u <= v, u <= w]
proc = flip o foldr
@@ -178,8 +180,8 @@ maphd f [] = []
maphd f [x:xs] = [f x:xs]
mapoptional :: .(.a -> .b) !(Optional .a) -> Optional .b
-mapoptional f Absent = Absent
-mapoptional f (Present x) = Present (f x)
+mapoptional f No = No
+mapoptional f (Yes x) = Yes (f x)
mappair :: .(.a -> .b) .(.c -> .d) !(.a,.c) -> (.b,.d)
mappair f g (x,y) = (f x,g y)
@@ -219,8 +221,8 @@ showbool :: .(!.Bool -> a) | fromBool a
showbool = fromBool
showoptional :: .(.a -> .String) !(Optional .a) -> String
-showoptional showa Absent = "Absent"
-showoptional showa (Present a) = "(Present "+++showa a+++")"
+showoptional showa No = "No"
+showoptional showa (Yes a) = "(Yes "+++showa a+++")"
showpair :: !.(.a -> .String) !.(.b -> .String) !(.a,.b) -> String
showpair showa showb (a,b) = "("+++showa a+++","+++showb b+++")"
diff --git a/sucl/loop.icl b/sucl/loop.icl
index 39c9f9e..0ecb18d 100644
--- a/sucl/loop.icl
+++ b/sucl/loop.icl
@@ -11,6 +11,7 @@ import rule
import graph
import pfun
import basic
+from general import Yes,No
import StdEnv
/*
@@ -134,14 +135,14 @@ transform
| == var
& == pvar
-transform anode sargs (Present spine)
+transform anode sargs (Yes spine)
= selectfromtip (spinetip spine)
where selectfromtip (nid,Open rgraph) = tryinstantiate nid rgraph anode sargs
selectfromtip (nid,Redex rule matching) = tryunfold nid rule matching spine
selectfromtip (nid,Strict) = tryannotate nid sargs
selectfromtip spine = dostop
-transform anode sargs Absent
+transform anode sargs No
= dostop
// ==== ATTEMPT TO INSTANTIATE A FREE VARIABLE WITH A PATTERN ====
diff --git a/sucl/spine.dcl b/sucl/spine.dcl
index 5e9c56b..e2b35b0 100644
--- a/sucl/spine.dcl
+++ b/sucl/spine.dcl
@@ -4,7 +4,7 @@ definition module spine
from rule import Rgraph,Rule
from pfun import Pfun
-from basic import Optional
+from general import Optional
/*
diff --git a/sucl/strat.icl b/sucl/strat.icl
index cc49256..8d1d469 100644
--- a/sucl/strat.icl
+++ b/sucl/strat.icl
@@ -9,6 +9,7 @@ import rule
import graph
import pfun
import basic
+from general import No,Yes
import StdEnv
/*
@@ -110,8 +111,8 @@ makernfstrategy
makernfstrategy hist strat rnfnodes node graph
= substrat [] spinecont rnfanswer node
- where spinecont spine = Present spine
- rnfanswer = Absent
+ where spinecont spine = Yes spine
+ rnfanswer = No
substrat spinenodes spinecont rnfanswer node
| isMember node spinenodes