When you want to write a polymorphic Function, you can use type variable. Type variables is represented by any lower case letter like a, b, c.... and it is replaced by real data types like Integer, Double, Bool etc.,

Suppose, you want to calculate Total Number of elements in a list, you can write a function signature like below.

lengthOfList :: [a] -> Int
lengthOfList is a function, which takes list of elements of any type a and return total number of elements, which is an Int.

lastButOne :: [a] -> a
lastButOne  is a function which takes a list of any type elements and return last but one (The element before the last element) element. In both the example, ‘a’ represent type variable.

listUtil.hs
`{- Get total number of elements in a list -}lengthOfList :: [a] -> IntlengthOfList [] = 0lengthOfList(x:xs) = 1 + lengthOfList(xs){- Return last but one of the list -}lastButOne :: [a] -> alastButOne (x:xs) = if length xs == 1then xelse lastButOne xs`

Previous                                                 Next                                                 Home

This post first appeared on Java Tutorial : Blog To Learn Java Programming, please read the originial post: here