updates, hierarchical
[clean-tests.git] / gengen / test.icl
index 18fde1d..242ccbe 100644 (file)
@@ -1,25 +1,25 @@
 module test
 
-import StdEnv, StdGeneric, StdMaybe
+import StdEnv, StdGeneric
 
 import Data.Func
 import Data.Functor
 import Data.List
 import Data.Tuple
 import Data.Bifunctor
-import Control.GenBimap
 import Data.Maybe
+import Control.GenBimap
 import Data.Either
 
 import Data.GenType
 import Data.GenType.CType
 
-derive gType Either, Maybe, T, R, Frac, Tr, Fix, Odd, Even, SR, List, Enum, NT, Blurp, EnumList
+derive gType Either, T, R, Frac, Tr, Fix, Odd, Even, SR, List, Enum, NT, Blurp, EnumList
 
 :: T a =: T2 a
 :: NT =: NT Int
 :: SR = {f1 :: Int, f2 :: Bool, f3 :: Tr Either Bool, f4 :: Enum}
-:: R a = {f1 :: Maybe (R a), f2 :: Bool, f3 :: T a, f4 :: Char -> Dynamic,
+:: R a = {f1 :: ? (R a), f2 :: Bool, f3 :: T a, f4 :: Char -> Dynamic,
        f5 :: [([#Int], [#Int!], [!Int!], [!Int], [Int!])],
        f6 :: ({!Int}, {R Bool}, {#Char}, {32#Int}),/*({!Int}, {#Char}, {R Bool})*/
        f7 :: {!Int}}
@@ -58,82 +58,6 @@ Start =
 //t :: Box GType (Maybe [Maybe (Either Bool String)])
 //t :: Box GType ([SR], Enum, T Int, NT, Blurp Int)
 //t :: Box GType [EnumList]
-t :: Box GType (Int -> SR)
+t :: Box GType (?(?(?Int)))
 //t :: Box GType (Odd Int, (), [Either (R (T *World)) (Frac Real)], Tr Either Bool, Fix Maybe)
 t = gType{|*|}
-
-//Start = toString t
-//
-//t :: GGType [Int]
-//t = ggType{|*|}
-//
-//:: BM a b =
-//     { ab :: a -> b
-//     , ba :: b -> a
-////   , mab :: A.m: (m a) -> m b
-////   , mba :: A.m: (m b) -> m a
-//     }
-//bm :: BM a a
-//bm = {ab=id, ba=id}//, mab=id, mba=id}
-//
-//:: GGType a
-//     = GGBasicType BasicType
-//     | GGTyRef String
-//     | GGUnit
-//     | E.e:   GGObject (BM a (OBJECT e))   GenericTypeDefDescriptor (GGType e)
-//     | E.e:   GGRecord (BM a (RECORD e))   GenericRecordDescriptor  (GGType e)
-//     | E.e:   GGCons   (BM a (CONS e))     GenericConsDescriptor    (GGType e)
-//     | E.e:   GGField  (BM a (FIELD e))    GenericFieldDescriptor   (GGType e)
-//     | E.l r: GGEither (BM a (EITHER l r)) (GGType l) (GGType r)
-//     | E.l r: GGPair   (BM a (PAIR l r))   (GGType l) (GGType r)
-//     | E.l r: GGArrow  (BM a (l -> r))     (GGType l) (GGType r)
-//
-//instance toString (GGType a)
-//where
-//     toString (GGBasicType t) = toString t
-//     toString GGUnit = "UNIT"
-//     toString (GGObject bm i e) = "(OBJECT " +++ i.gtd_name +++ " " +++ toString e +++ ")"
-//     toString (GGRecord bm i e) = "(RECORD " +++ i.grd_name +++ " " +++ toString e +++ ")"
-//     toString (GGCons bm i e) = "(CONS " +++ i.gcd_name +++ " " +++ toString e +++ ")"
-//     toString (GGField bm i e) = "(FIELD " +++ i.gfd_name +++ " " +++ toString e +++ ")"
-//     toString (GGEither bm l r) = "(EITHER " +++ toString l +++ " " +++ toString r +++ ")"
-//     toString (GGPair bm l r) = "(PAIR " +++ toString l +++ " " +++ toString r +++ ")"
-//
-//ggtypemap :: (.a -> .b) (.b -> .a) u:(GGType .a) -> u:GGType .b
-//ggtypemap ab ba (GGBasicType t) = (GGBasicType t)
-//ggtypemap ab ba GGUnit = GGUnit
-//ggtypemap ab ba (GGObject bm i a) = GGObject {bm & ab=bm.ab o ba, ba=ab o bm.ba} i a
-//ggtypemap ab ba (GGRecord bm i a) = GGRecord {bm & ab=bm.ab o ba, ba=ab o bm.ba} i a
-//ggtypemap ab ba (GGCons bm i a) = GGCons {bm & ab=bm.ab o ba, ba=ab o bm.ba} i a
-//ggtypemap ab ba (GGField bm i a) = GGField {bm & ab=bm.ab o ba, ba=ab o bm.ba} i a
-//ggtypemap ab ba (GGEither bm l r) = GGEither {bm & ab=bm.ab o ba, ba=ab o bm.ba} l r
-//ggtypemap ab ba (GGPair bm l r) = GGPair {bm & ab=bm.ab o ba, ba=ab o bm.ba} l r
-//ggtypemap ab ba (GGArrow bm l r) = GGArrow {bm & ab=bm.ab o ba, ba=ab o bm.ba} l r
-//
-//bimap{|GGType|} ab ba t = ggtypemap ab ba t
-//
-//generic ggType a :: GGType a
-//ggType{|UNIT|} = GGUnit
-//ggType{|OBJECT of gtd|} f = GGObject bm gtd f
-//ggType{|CONS of gcd|} f = GGCons bm gcd f
-//ggType{|RECORD of grd|} f = GGRecord bm grd f
-//ggType{|FIELD of gfd|} f = GGField bm gfd f
-//ggType{|EITHER|} fl fr = GGEither bm fl fr
-//ggType{|PAIR|} fl fr = GGPair bm fl fr
-//
-//ggType{|Int|} = GGBasicType BTInt
-//ggType{|Bool|} =  GGBasicType BTBool
-//ggType{|Real|} = GGBasicType BTReal
-//ggType{|Char|} = GGBasicType BTChar
-//ggType{|World|} = GGBasicType BTWorld
-//ggType{|Dynamic|} = GGBasicType BTDynamic
-//ggType{|File|} = GGBasicType BTFile
-//
-//ggType{|(->)|} fl fr = GGArrow bm fl fr
-////ggType{|[#]|} f = GGUList ULLazy f
-////ggType{|[#!]|} f = GGUList ULStrict f
-////ggType{|{}|} f = GGArray ALazy f
-////ggType{|{!}|} f = GGAray AStrict f
-////ggType{|{#}|} f = GGArray AUnboxed f
-////ggType{|{32#}|} f = GGArray APacked f
-//derive ggType []