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] -> Int lengthOfList [] = 0 lengthOfList(x:xs) = 1 + lengthOfList(xs) {- Return last but one of the list -} lastButOne :: [a] -> a lastButOne (x:xs) = if length xs == 1 then x else lastButOne xs
No comments:
Post a Comment