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)