data ListOfIntegers = INil | ICons Integer ListOfIntegers

icar :: ListOfIntegers -> Integer
icar (ICons i is) = i

icdr :: ListOfIntegers -> ListOfIntegers
icdr (ICons i is) = is

munge :: ListOfIntegers -> [Integer]
munge INil = []
munge (ICons i is) = (i:(munge is))

unmunge :: [Integer] -> ListOfIntegers
unmunge [] = INil
unmunge (i:is) = ICons i (unmunge is)

nth :: Integer -> ListOfIntegers -> Integer
nth 0 loi = icar loi
nth n loi = nth (n-1) (icdr loi)

fifth :: ListOfIntegers -> Integer
fifth = nth 5

