以下功能如何工作:
mapEithers :: (a -> Either b c) -> [a] -> Either b [c]
mapEithers f (x:xs) = case mapEithers f xs of
Left err -> Left err
Right ys -> case f x of
Left err -> Left err
Right y -> Right (y:ys)
mapEithers _ _ = Right []
在第一个 case 表达式 ( ) 中,当函数尚未应用于列表的元素时case mapEithers f xs
,它如何与Left
值进行模式匹配。Right
f