Functions in Haskell
Functions are the most important idea in Haskell. A function takes a single value as input and returns a single value as output. Clearly it is often desirable to take in more than one argument or give out more than one. This can be done using tuples or lists but there is a very mathematically elegant and useful method called currying, named for the logician Haskell Curry.
Functions in Haskell are also values in themselves, allowing Haskell to use higher-order functions.
main = putStrLn "Hello World!"