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".