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))) n
import Data.List
elemIndex 'b' "abc" === Just 1
A really good tool for finding haskell functions is Hoogle. Allows you to search by type signature among other things.
If you wanted to do everything in one pass I'd recommend Data.List.mapAccumL, passing the index of the largest number found so far along as the accumulator.