It can be written more concisely with fold.
$ ghci
Prelude> let getFromList ls pred = foldl (\x y -> if x `pred` y then x else y) (head ls) (tail ls)
Prelude> getFromList [1..10] (<)
1
Prelude> getFromList [1..10] (>)
10