Mapping over Either's Left

前端 未结 4 1689
慢半拍i
慢半拍i 2021-02-02 11:48

Somewhere in my app I receive an Either ParserError MyParseResult from Parsec. Downstream this result gets some other parsing done over using other libs. During tha

4条回答
  •  无人及你
    2021-02-02 12:04

    We have such a function in the standard libraries,

    Control.Arrow.left :: a b c -> a (Either b d) (Either c d)
    

    is the generalisation to arbitrary Arrows. Substitute (->) for a and apply it infix, to get the specialisation

    left :: (b -> c) -> Either b d -> Either c d
    

    There is nothing wrong with your approach in principle, it's a sensible way to handle the situation.

提交回复
热议问题