Где-то в моем приложении я получаю Either ParserError MyParseResult
от Parsec. В результате этого результата выполняется другой анализ, использующий другие библиотеки. Во время этой второй фазы синтаксического анализа также может возникнуть некоторая ошибка, которую я хотел бы передать как Left String
, но для этого мне также нужно преобразовать результат из Parsec в String
. Чтобы достичь этого, мне нужна функция, которая позволит мне отобразить через Left
с помощью функции show
.
Функция отображения, о которой я думаю, выглядит примерно так:
mapLeft :: (a -> b) -> Either a c -> Either b c
mapLeft f (Left x) = Left $ f x
mapLeft _ x = x
Но я был очень удивлен, не найдя ничего подходящего для hackage db. Итак, теперь у меня возникают сомнения в том, что я использую правильный подход к моей проблеме.
Почему в стандартной библиотеке нет такой функции? Что не так с моим подходом?