module Identifiers where foo, bar, baz :: Int -> Int -> Int foo :: Int -> Int -> Int foo Int x Int y = Int x Int -> Int -> Int forall a. Num a => a -> a -> a + Int x Int -> Int -> Int forall a. Num a => a -> a -> a * Int -> Int -> Int bar Int y Int x Int -> Int -> Int forall a. Num a => a -> a -> a * Int y Int -> Int -> Int forall a. Num a => a -> a -> a + Int y bar :: Int -> Int -> Int bar Int x Int y = Int y Int -> Int -> Int forall a. Num a => a -> a -> a + Int x Int -> Int -> Int forall a. Num a => a -> a -> a - Int -> Int -> Int baz Int x Int y Int -> Int -> Int forall a. Num a => a -> a -> a - Int x Int -> Int -> Int forall a. Num a => a -> a -> a + Int y baz :: Int -> Int -> Int baz Int x Int y = Int x Int -> Int -> Int forall a. Num a => a -> a -> a * Int y Int -> Int -> Int forall a. Num a => a -> a -> a * Int y Int -> Int -> Int forall a. Num a => a -> a -> a * Int y Int -> Int -> Int forall a. Num a => a -> a -> a * Int x quux :: Int -> Int quux :: Int -> Int quux Int x = Int -> Int -> Int foo (Int -> Int -> Int bar Int x Int x) (Int -> Int -> Int bar Int x Int x) norf :: Int -> Int -> Int -> Int norf :: Int -> Int -> Int -> Int norf Int x Int y Int z | Int x Int -> Int -> Bool forall a. Ord a => a -> a -> Bool < Int 0 = Int -> Int quux Int x | Int y Int -> Int -> Bool forall a. Ord a => a -> a -> Bool < Int 0 = Int -> Int quux Int y | Int z Int -> Int -> Bool forall a. Ord a => a -> a -> Bool < Int 0 = Int -> Int quux Int z | Bool otherwise = Int -> Int -> Int -> Int norf (-Int x) (-Int y) (-Int z) main :: IO () main :: IO () main = do String -> IO () putStrLn (String -> IO ()) -> (Int -> String) -> Int -> IO () forall b c a. (b -> c) -> (a -> b) -> a -> c . Int -> String forall a. Show a => a -> String show (Int -> IO ()) -> Int -> IO () forall a b. (a -> b) -> a -> b $ Int -> Int -> Int foo Int x Int y String -> IO () putStrLn (String -> IO ()) -> (Int -> String) -> Int -> IO () forall b c a. (b -> c) -> (a -> b) -> a -> c . Int -> String forall a. Show a => a -> String show (Int -> IO ()) -> Int -> IO () forall a b. (a -> b) -> a -> b $ Int -> Int quux Int z String -> IO () putStrLn (String -> IO ()) -> (Int -> String) -> Int -> IO () forall b c a. (b -> c) -> (a -> b) -> a -> c . Int -> String forall a. Show a => a -> String show (Int -> IO ()) -> Int -> IO () forall a b. (a -> b) -> a -> b $ Int -> Int -> Int -> Int Identifiers.norf Int x Int y Int z where x :: Int x = Int 10 y :: Int y = Int 20 z :: Int z = Int 30