-- data Bool () where {
--     True : Bool () 
--     False : Bool ()
-- };
-- 
-- main : _Int ;
-- main = case True of {
--     False => 0 ;
--     True => 1
-- };

data List ('a) where {
    Nil : List ('a) 
    Cons : ('a) -> List ('a) -> List ('a)
};

data Maybe ('a) where {
    Nothing : Maybe ('a)
    Just : 'a -> Maybe ('a)
};

safeHead : List ('a) -> Maybe ('a) ;
safeHead xs =
    case xs of {
        Nil => Nothing ;
        Cons x xs => Just x
    };

main : Maybe (_Int) ;
main = safeHead (Cons 0 (Cons 1 Nil)) ;
