3 import StdEnv, StdGeneric
11 import Control.GenBimap
15 import Data.GenType.CType
17 derive gType Either, T, R, Frac, Tr, Fix, Odd, Even, SR, List, Enum, NT, Blurp, EnumList
21 :: SR = {f1 :: Int, f2 :: Bool, f3 :: Tr Either Bool, f4 :: Enum}
22 :: R a = {f1 :: ? (R a), f2 :: Bool, f3 :: T a, f4 :: Char -> Dynamic,
23 f5 :: [([#Int], [#Int!], [!Int!], [!Int], [Int!])],
24 f6 :: ({!Int}, {R Bool}, {#Char}, {32#Int}),/*({!Int}, {#Char}, {R Bool})*/
26 :: Tr m b= Tr (m Int b)
27 :: Frac a = (/.) infixl 7 a a | Flurp
28 :: Fix f = Fix (f (Fix f))
30 :: List a = Cons a (List a) | Nil
32 :: Blurp a = Blurp (List a) | Blorp
34 :: EnumList = ECons Enum EnumList | ENil
37 ////Start = foldr (\i c->print i ["\n":c]) [] $ catMaybes $ map gTypeToType $ flattenGType $ unBox t
38 //:: Pair a b = Pair a b
39 //instance == (Pair a b) | == a where (==) (Pair a1 _) (Pair a2 _) = a1 == a2
40 //instance < (Pair a b) | < a where (<) (Pair a1 _) (Pair a2 _) = a1 < a2
41 :: Odd a = Odd (Even a) | OddBlurp
42 :: Even a = Even (Odd a) | EvenBlurp
45 ( flatTypedef $ gTypeToType $ unBox t
46 , typedefs $ map (map gTypeToType) $ map (filter (not o isBasic)) $ flattenGType $ unBox t
49 //Start = typedefs //$ (\x->[[gTypeToType x]])
50 // $ map (/*filter (not o isBuiltin) o*/ catMaybes o map gTypeToType)
52 // $ map (map gTypeToType)
53 // $ map (filter (not o isBasic))
58 //t :: Box GType (?# Int)
59 //t :: Box GType (Maybe [Maybe (Either Bool String)])
60 //t :: Box GType ([SR], Enum, T Int, NT, Blurp Int)
61 //t :: Box GType [EnumList]
62 t :: Box GType (?(?(?(?^Enum))))
63 //t :: Box GType (Odd Int, (), [Either (R (T *World)) (Frac Real)], Tr Either Bool, Fix Maybe)