Finding index of element in a list in Haskell?

haskell, indexing, list

Solution

How to find the index of the maximum element? How about trying all indexes and checking whether they are the maximum?

ghci> let maxIndex xs = head $ filter ((== maximum xs) . (xs !!)) [0..]

But this sounds like something for which a function already exists. My code will be more readable, maintainable, and probably even more efficient, if I used the existing function.

FYI, you can also ask Hoogle that can search by Haskell type signatures (as Will suggested):

$ hoogle "Ord a => [a] -> Int" | head

<Nothing relevant>

$ # hmm, so no function to give me the index of maximum outright,
$ # but how about finding a specific element, and I give it the maximum?
$ hoogle "a -> [a] -> Int" | head
Data.List elemIndex :: Eq a => a -> [a] -> Maybe Int
Data.List elemIndices :: Eq a => a -> [a] -> [Int]

Problem

I have a function in Haskell which finds the maximum value of an exponentiation from a list: ``` prob99 = maximum $ map (\xs -> (head xs)^(head (tail xs))) numbers ``` What I need to find is the location of this maximum value in the resultant list. How would I go about this? Edit: I found a solution that goes like this: ``` n = [[519432,525806],[632382,518061].... prob99b [a,b] = b* (log a) answer = snd $ maximum (zip (map prob99b n) [1..]) ```

Original source

Related problems