在我的应用程序的某个地方,我收到了Either ParserError MyParseResult
来自 Parsec 的消息。在下游,此结果通过使用其他库完成了一些其他解析。在解析的第二阶段,也可能会发生某种错误,我想将其作为 a 传递Left String
,但为此我需要将结果从 Parsec 转换为String
。为了实现这一点,我需要一个允许我使用函数映射 aLeft
的show
函数。
我正在考虑的映射函数看起来像这样:
mapLeft :: (a -> b) -> Either a c -> Either b c
mapLeft f (Left x) = Left $ f x
mapLeft _ x = x
但我很惊讶没有在 hackage db 上找到任何匹配的东西。所以现在我怀疑我是否使用了正确的方法来解决我的问题。
为什么标准库中没有这样的功能?我的方法有什么问题?