add publishing of sds's
[mTask.git] / gCons.icl
index 6ed064d..6e5aaa5 100644 (file)
--- a/gCons.icl
+++ b/gCons.icl
@@ -22,6 +22,7 @@ consName{|Int|}        i = toString i
 consName{|Bool|}       b = toString b
 consName{|Char|}       c = toString c
 consName{|String|}     s = s
+consName{|[]|} _ _ = "[]"
 consName{|(->)|}   f g x = g (x undef)
 
 generic consIndex a :: a -> Int
@@ -35,30 +36,26 @@ consIndex{|Int|} i = i
 consIndex{|Bool|} b = if b 1 0
 consIndex{|Char|} c = toInt c
 consIndex{|String|} _ = 0
+consIndex{|[]|} _ _ = 0
 
-import StdMisc, StdDebug
-
-conses :: [a] | gconses{|*|} a
-conses = gconses{|*|} True
-
-generic gconses a :: Bool -> [a]
-gconses{|CONS|} f True = map CONS (f False)
-gconses{|CONS|} f b = [CONS (hd (f b))]
-gconses{|UNIT|} _ = [UNIT]
-gconses{|PAIR|} f g _ = []
-gconses{|EITHER|} f g b = map LEFT (f b) ++ map RIGHT (g b)
-gconses{|OBJECT|} f b = map OBJECT (f b)
-gconses{|RECORD|} f b = map RECORD (f b)
-gconses{|FIELD|} f b = map FIELD (f b)
-gconses{|Int|} _ = [0]
-gconses{|Bool|} _ = [True]
-gconses{|Char|} _ = ['\0']
-gconses{|Real|} _ = [0.0]
-gconses{|String|} _ = [""]
-gconses{|[]|} _ _ = [[ ]]
-gconses{|[!]|} _ _ = [[!]]
-gconses{|[ !]|} _ _ = [[ !]]
-gconses{|[!!]|} _ _ = [[!!]]
-gconses{|{}|} _ _ = [{}]
-gconses{|{!}|} _ _ = [{!}]
-gconses{|()|} _ = [()]
+generic conses a :: [a]
+conses{|CONS|} f = [CONS (hd f)]
+conses{|UNIT|} = [UNIT]
+conses{|PAIR|} f g = []
+conses{|EITHER|} f g = map LEFT f ++ map RIGHT g
+conses{|OBJECT|} f = map OBJECT f
+conses{|RECORD|} f = map RECORD f
+conses{|FIELD|} f = map FIELD f
+conses{|Int|} = [0]
+conses{|Bool|} = [True]
+conses{|Char|} = ['\0']
+conses{|Real|} = [0.0]
+conses{|String|} = [""]
+conses{|[]|} _ = [[ ]]
+conses{|[!]|} _ = [[!]]
+conses{|[ !]|} _ = [[ !]]
+conses{|[!!]|} _ = [[!!]]
+conses{|{}|} _ = [{}]
+conses{|{!}|} _ = [{!}]
+conses{|()|} = [()]
+conses{|(->)|} _ _ = [const undef]