diff --git a/test_program b/test_program index f14962d..ded8250 100644 --- a/test_program +++ b/test_program @@ -1,4 +1,41 @@ -data Maybe (a) where { - Nothing : Maybe (a) - Just : a -> Maybe (a) -} +data List (a) where { + Nil : List (a) + Cons : a -> List (a) -> List (a) +}; + +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 { + 1 => True ; + _ => case xs of { + Cons x xs => False ; + _ => False + } + }; + _ => False + }; + +-- firstIsOne :: [Int] -> Bool +-- firstIsOne xs = case xs of +-- (1 : xs) -> True +-- _ -> False + +main = firstIsOne (Cons 'a' Nil)