I$Q55.5.0+dev0-2025-04-28/&Either!tA;!a@}!b@~@B$LeftB@@@7../../stdlib/either.mlix  x  @@&EitherA@%RightB@@@x  x  @@ B@@@A@YY@@@@@@x  @@@@@@A@$left@!a@B@@@&Either&!t!b@B@@@@@@@8| e e9| e @@7C@@%right@!b@B@@@&Either'!t!a@B@@@@@@@[  \  @@ZD@@'is_left@&Either(!t!a@B@!b@B@@@@@@$bool)@@@@@@B  B  @@E@@(is_right@&Either*!t!a@B@!b@B@@@@@@)+@@@@@@E C CE C d@@F@@(get_left@&Either,!t!a@B@!b@B@@@@@@@@@H  H  @@G@@)get_right@&Either-!t!a@B@Ơ!b@B@@@@@@@@@O S SO S s@@H@@)find_left@&Either.!t!a@B@Ѡ!b@B@@@@@@&optionL@@@@@@V  V  "@@I@@*find_right@&Either/!t!a@B@ޠ!b@B@@@@@@* @@@@@@DY m mEY m @@CJ@@(map_left@@"a1@B@@@"a2@B@@@@@@&Either0!t!b@B@@@@@@&Either1!t"@@@@@@@@\  \ @@~K@@)map_right@@"b1@B@@@"b2@B@@@@@ @&Either2!t!a@B@@@@@@ &Either3!t#@@@ @@ @@@`ww`w@@L@@#map$left@"a1@*B@@@"a2@,B@@@@@'%right@"b1@.B@@@"b2@0B@@@@@%@&Either4!t.@@@@@#&Either5!t2@@@"@@$@@&@@(@deb@@M@@$fold $left@!a@BB@1@@3!c@FB@2@@4@@?%right@!b@DB@5@@6@@7@@=@&Either6!t(@@@:@@;$@@<@@>@@@@DiEi@@CN@@'retract!@&Either7!t!a@NB@G@@@J@@K@@L@am{{bm{@@`O@@$iter"$left@!a@bB@O@@Q$unit8@@@P@@R@@_%right@!b@dB@S@@U9@@@T@@V@@]@&Either:!t-@@@Y@@[);@@@Z@@\@@^@@`@rr5@@P@@'for_all#$left@!a@xB@e@@gC<@@@f@@h@@u%right@!b@zB@i@@kX=@@@j@@l@@s@&Either>!t,@@@o@@qk?@@@p@@r@@t@@v@vv@@Q@@%equal$$left@!a@B@{@@@ @@}@@@@|@@~@@@@%right@!b@B@@@@ @@A@@@@@@@@@@&EitherB!t4@@@@@@&EitherC!tB*@@@@@D@@@@@@@@@@@@JzTTK|@@IR@@'compare%$left@!a@B@@@@ @@#intE@@@@@@@@@%right@!b@B@@@@ @@F@@@@@@@@@@&EitherG!t5@@@@@@&EitherH!tC*@@@@@;I@@@@@@@@@@@@bb@@S@@@3,Either type.@ N Either is the simplest and most generic sum/variant type: a value of 1('a, 'b) Either.t- is either a -Left (v : 'a)* or a .Right (v : 'b)!.@ It is a natural choice in the API of generic functions where values could fall in two different cases, possibly at different types, without assigning a specific meaning to what each case should be.@1 For example:@! QList.partition_map: ('a -> ('b, 'c) Either.t) -> 'a list -> 'b list * 'c list@ If you are looking for a parametrized type where one alternative means success and the other means failure, you should use the more specific type (Result.t@@!.@@@@$4.12@@@@@@@A7../../stdlib/either.mli#(Either.t3+A value of 1('a, 'b) Either.t contains either a value of "'a0 or a value of "'b@@@@@@@@@@@@YY@ @@@@@@@A@@@@+Either.left3&left v$ is &Left v!.@@@@@@@@@@@@@ @@@@,Either.right3'right v$ is 'Right v!.@@@@@@@@@@@@@@@@@㠕.Either.is_left30is_left (Left v)$ is $true", 1is_left (Right v)$ is %false!.@@@@@@@@@@@@@=@@@@ޠ/Either.is_right31is_right (Left v)$ is %false", 2is_right (Right v)$ is $true!.@@@@@@@@@@@@@a@@@@ڠ/Either.get_left3*get_left e$ is !v$ if !e$ is &Left v5 and raise otherwise.@@@@#5.4@@@0Invalid_argument#if !e$ is 'Right _!.@@@@@@@@@@0Either.get_right3+get_right e$ is !v$ if !e$ is 'Right v5 and raise otherwise.@@@@#5.4@@@0Invalid_argument#if !e$ is &Left _!.@@@@@@@@@@0Either.find_left32find_left (Left v)$ is &Some v", 3find_left (Right _)$ is $None@@@@@@@@@@@@@@@@@1Either.find_right34find_right (Right v)$ is &Some v", 3find_right (Left _)$ is $None@@@@@@@@@@@@@@@@@/Either.map_left3,map_left f e$ is *Left (f v)$ if !e$ is &Left v) and !e$ if !e$ is 'Right _!.@@@@@@@@@@@@@I@L @@@@0Either.map_right3-map_right f e$ is +Right (f v)$ if !e$ is 'Right v) and !e$ if !e$ is &Left _!.@@@@@@@@@@@@@@ @@@@*Either.map39map ~left ~right (Left v)$ is -Left (left v)&, :map ~left ~right (Right v)$ is /Right (right v)!.@@@@@@@@@@@@@@@@@@@͠+Either.fold3:fold ~left ~right (Left v)$ is &left v*, and ;fold ~left ~right (Right v)$ is 'right v!.@@@@@@@@@@@@@@@@@@@.Either.retract30retract (Left v)$ is !v&, and 1retract (Right v)$ is !v!.@@@@#5.4@@@@@@@@@@@@à+Either.iter3:iter ~left ~right (Left v)$ is &left v*, and ;iter ~left ~right (Right v)$ is 'right v!.@@@@@@@@@@@@@@@)@@@@.Either.for_all3=for_all ~left ~right (Left v)$ is &left v*, and >for_all ~left ~right (Right v)$ is 'right v!.@@@@@@@@@@@@@@@S@@@@,Either.equal38equal ~left ~right e0 e13 tests equality of "e0% and "e1' using $left) and %right + to respectively compare values wrapped by &Left _) and 'Right _!.@@@@@@@@@@@@@@@@|@@@@m.Either.compare3:compare ~left ~right e0 e10 totally orders "e0% and "e1' using $left) and %right + to respectively compare values wrapped by 'Left _ % and 'Right _&. &Left _9 values are smaller than 'Right _( values.@@@@@@@@@@@@@@@u@j@@@@[@@$@@A@@@@@