Вы можете, несмотря на другие ответы, сделать это, используя расширение шаблонов вида в GHC:
getFirstError ((msum . map test) -> Just x) = x
where test (Left x) = Just x
test (Right x) = Nothing
В качестве альтернативы, используя шаблон охранников:
getFirstError (xs) | Just x <- (msum $ map test xs) = x
where test (Left x) = Just x
test (Right) x = Nothing