g :: Int -> [Int] -> Int g 0 [] = 0 g _ (x:xs) = x h :: Int -> Int h x = h (x+1) m = g (h 0) [1] -- Rigid not: rnot :: Bool -> Bool rnot b = case b of True -> False _ -> True