- Haskell Tutorial
- Haskell - Home
- Haskell - Overview
- Haskell - Environment Set Up
- Haskell - Basic Data Models
- Haskell - Basic Operators
- Haskell - Decision Making
- Haskell - Types and Type Class
- Haskell - Functions
- Haskell - More On Functions
- Haskell - Function Composition
- Haskell - Modules
- Haskell - Input & Output
- Haskell - Functor
- Haskell - Monads
- Haskell - Zippers

- Haskell Useful Resources
- Haskell - Quick Guide
- Haskell - Useful Resources
- Haskell - Discussion

- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who

# Haskell - Function Composition

**Function Composition** is the process of using the output of one function as an input of another function. It will be better if we learn the mathematics behind **composition**. In mathematics, **composition** is denoted by **f{g(x)}** where **g()** is a function and its output in used as an input of another function, that is, **f()**.

Function composition can be implemented using any two functions, provided the output type of one function matches with the input type of the second function. We use the dot operator (.) to implement function composition in Haskell.

Take a look at the following example code. Here, we have used function composition to calculate whether an input number is even or odd.

eveno :: Int -> Bool noto :: Bool -> String eveno x = if x `rem` 2 == 0 then True else False noto x = if x == True then "This is an even Number" else "This is an ODD number" main = do putStrLn "Example of Haskell Function composition" print ((noto.eveno)(16))

Here, in the **main** function, we are calling two functions, **noto** and **eveno**, simultaneously. The compiler will first call the function **"eveno()"** with **16** as an argument. Thereafter, the compiler will use the output of the **eveno** method as an input of **noto()** method.

Its output would be as follows −

Example of Haskell Function composition "This is an even Number"

Since we are supplying the number 16 as the input (which is an even number), the **eveno()** function returns **true**, which becomes the input for the **noto()** function and returns the output: "This is an even Number".