I am a complete newbie to Haskell. I have a list of tuples that I use in Haskell: the structure is like this [(a,b),(c,d),(e,f),(g,h)]
I want to return the maximum element in this tuple according to the second value: Therefore, if the list of tuples is [(4,8),(9,10),(15,16),(10,4)] , I want the maximum the element was (15,16) .
But I have no idea how to do this. This is my attempt so far,
maximum' :: (Ord a) => (Num a) => [(a,b)] -> a maximum' [] = error "maximum of empty list" maximum' [(x,y)] = -1 maximum' (x:xs) | snd x > snd(xs !! maxTail) = 0 | otherwise = maxTail where maxTail = maximum' xs + 1
And I get this error message that doesn't make any sense to me:
newjo.hs:23:25: Could not deduce (a ~ Int) from the context (Ord a, Num a) bound by the type signature for maximum' :: (Ord a, Num a) => [(a, b)] -> a at newjo.hs:19:14-47 `a' is a rigid type variable bound by the type signature for maximum' :: (Ord a, Num a) => [(a, b)] -> a at newjo.hs:19:14 In the second argument of `(!!)', namely `maxTail' In the first argument of `snd', namely `(xs !! maxTail)' In the second argument of `(>)', namely `snd (xs !! maxTail)'`
I need help on how to do this.