diff --git a/src/Monomorphizer/Monomorphizer.hs b/src/Monomorphizer/Monomorphizer.hs index 051641e..a217b87 100644 --- a/src/Monomorphizer/Monomorphizer.hs +++ b/src/Monomorphizer/Monomorphizer.hs @@ -47,7 +47,7 @@ monoType (T.TAll _ t) = monoType t monoType (T.TVar (T.MkTVar i)) = M.TLit "Int" monoType (T.TLit (T.Ident i)) = M.TLit (Ident i) monoType (T.TFun t1 t2) = M.TFun (monoType t1) (monoType t2) -monoType (T.TData _ _) = error "Not sure what this is" +monoType (T.TData (T.Ident n) t) = M.TLit (Ident (n ++ concatMap show t)) monoexpt :: T.ExpT -> M.ExpT monoexpt (e, t) = (monoExpr e, monoType t) diff --git a/test_program b/test_program index 33f69ce..b43a99a 100644 --- a/test_program +++ b/test_program @@ -1,46 +1,9 @@ -data List (a) where { - Nil : List (a) - Cons : a -> List (a) -> List (a) -}; +data Bool () where { + True : Bool () + False : Bool () + }; --- data Bool () where { --- True : Bool () --- False : Bool () --- }; - --- hello_world = Cons 'h' (Cons 'e' (Cons 'l' (Cons 'l' (Cons 'o' (Cons ' ' (Cons 'w' (Cons 'o' (Cons 'r' (Cons 'l' (Cons 'd' Nil)))))))))) ; - --- length : List (a) -> Int ; --- length xs = case xs of { --- Nil => 0; --- Cons x xs => length xs; --- }; - --- head : List (a) -> a ; --- head xs = case xs of { --- Cons x xs => x; --- }; - --- firstIsOne : List (Int) -> Bool () ; --- firstIsOne xs = case xs of { --- Cons x xs => case x of { --- 0 => True; --- _ => case xs of { --- Cons x xs => False; --- _ => False; --- }; --- }; --- _ => False; --- }; - --- main = firstIsOne (Cons 1 Nil); - --- test xs = case xs of { --- 1 => 0; --- lol => 1; - -- }; - -deepList xs = case xs of { - Cons Nil _ => 1 ; - _ => 0 ; -}; +main = case True of { + True => 1; + False => 0; + };