package Ġarrow . mt l Ċ Ċ import Ġarrow . Kind Ċ import Ġarrow . core . Either Ċ import Ġarrow . core . For Id Ċ import Ġarrow . core . Id Ċ import Ġarrow . core . Left Ċ import Ġarrow . core . Option Ċ import Ġarrow . core . Right Ċ import Ġarrow . core . extensions . const . div isible . div isible Ċ import Ġarrow . core . extensions . id . applic ative . applic ative Ċ import Ġarrow . core . extensions . id . functor . functor Ċ import Ġarrow . core . extensions . id . mon ad . mon ad Ċ import Ġarrow . core . extensions . id . traverse . traverse Ċ import Ġarrow . core . extensions . mon oid Ċ import Ġarrow . core . extensions . option . functor . functor Ċ import Ġarrow . core . fix Ċ import Ġarrow . fx . For IO Ċ import Ġarrow . fx . IO Ċ import Ġarrow . fx . extensions . io . applic ative Error . attempt Ċ import Ġarrow . fx . extensions . io . async . async Ċ import Ġarrow . fx . mt l . e ith ert . async . async Ċ import Ġarrow . fx . type classes . seconds Ċ import Ġarrow . mt l . extensions . e ith ert . alternative . alternative Ċ import Ġarrow . mt l . extensions . e ith ert . applic ative . applic ative Ċ import Ġarrow . mt l . extensions . e ith ert . div isible . div isible Ċ import Ġarrow . mt l . extensions . e ith ert . functor . functor Ċ import Ġarrow . mt l . extensions . e ith ert . sem ig roup K . sem ig roup K Ċ import Ġarrow . mt l . extensions . e ith ert . traverse . traverse Ċ import Ġarrow . test . Unit Spec Ċ import Ġarrow . test . l aws . Alternative L aws Ċ import Ġarrow . test . l aws . Async L aws Ċ import Ġarrow . test . l aws . Div isible L aws Ċ import Ġarrow . test . l aws . Sem ig roup KL aws Ċ import Ġarrow . test . l aws . Tra verse L aws Ċ import Ġarrow . type classes . Const Ċ import Ġarrow . type classes . Const Partial Of Ċ import Ġarrow . type classes . Eq Ċ import Ġarrow . type classes . const Ċ import Ġarrow . type classes . value Ċ import Ġio . kot lint est . properties . for All Ċ Ċ class ĠEither T Test Ġ: ĠUnit Spec () Ġ{ ĊĊĠ Ġfun Ġ< A > ĠE Q (): ĠEq < Kind < Either TP art ial Of < For IO , ĠThrowable >, ĠA >> Ġ= ĠEq Ġ{ Ġa , Ġb Ġ-> ĊĠĠĠ Ġa . value (). attempt (). unsafe Run Timed ( 6 0 . seconds ) Ġ== Ġb . value (). attempt (). unsafe Run Timed ( 6 0 . seconds ) ĊĠ Ġ} ĊĊĠ Ġinit Ġ{ ĊĊĠĠĠ Ġtest L aws ( ĊĠĠĠĠĠ ĠDiv isible L aws . l aws ( ĊĠĠĠĠĠĠĠ ĠEither T . div isible < Const Partial Of < Int >, ĠInt >( Const . div isible ( Int . mon oid ())), ĊĠĠĠĠĠĠĠ Ġ{ ĠEither T ( it . const ()) Ġ}, ĊĠĠĠĠĠĠĠ ĠEq Ġ{ Ġa , Ġb Ġ-> Ġa . value (). value () Ġ== Ġb . value (). value () Ġ} ĊĠĠĠĠĠ Ġ), ĊĠĠĠĠĠ ĠAltern ative L aws . l aws ( ĊĠĠĠĠĠĠĠ ĠEither T . alternative ( Id . mon ad (), ĠInt . mon oid ()), ĊĠĠĠĠĠĠĠ Ġ{ ĠEither T . just ( Id . applic ative (), Ġit ) Ġ}, ĊĠĠĠĠĠĠĠ Ġ{ Ġi Ġ-> ĠEither T . just ( Id . applic ative (), Ġ{ Ġj : ĠInt Ġ-> Ġi Ġ+ Ġj Ġ}) Ġ}, ĊĠĠĠĠĠĠĠ ĠEq Ġ{ Ġa , Ġb Ġ-> ĊĠĠĠĠĠĠĠĠĠ Ġa . value (). fix () Ġ== Ġb . value (). fix () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ), ĊĠĠĠĠĠ ĠAsync L aws . l aws ( Either T . async ( IO . async ()), ĠE Q (), ĠE Q ()), ĊĠĠĠĠĠ ĠTra verse L aws . l aws ( Either T . traverse < For Id , ĠInt >( Id . traverse ()), ĠEither T . functor < For Id , ĠInt >( Id . functor ()), Ġ{ ĠEither T ( Id ( Right ( it ))) Ġ}, ĠEq . any ()), ĊĠĠĠĠĠ ĠSem ig roup KL aws . l aws ( ĊĠĠĠĠĠĠĠ ĠEither T . sem ig roup K < For Id , ĠInt >( Id . mon ad ()), ĊĠĠĠĠĠĠĠ ĠEither T . applic ative < For Id , ĠInt >( Id . mon ad ()), ĊĠĠĠĠĠĠĠ ĠEq . any ()) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ" map Left Ġshould Ġalter Ġleft Ġinstance Ġonly " Ġ{ ĊĠĠĠĠĠ Ġfor All Ġ{ Ġi : ĠInt , Ġj : ĠInt Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġleft : ĠEither < Int , ĠInt > Ġ= ĠLeft ( i ) ĊĠĠĠĠĠĠĠ Ġval Ġright : ĠEither < Int , ĠInt > Ġ= ĠRight ( j ) ĊĠĠĠĠĠĠĠ ĠEither T ( Option ( left )). map Left ( Option . functor ()) Ġ{ Ġit Ġ+ Ġ 1 Ġ} Ġ== ĠEither T ( Option ( Left ( i Ġ+ Ġ 1 ))) Ġ&& ĊĠĠĠĠĠĠĠĠĠ ĠEither T ( Option ( right )). map Left ( Option . functor ()) Ġ{ Ġit Ġ+ Ġ 1 Ġ} Ġ== ĠEither T ( Option ( right )) Ġ&& ĊĠĠĠĠĠĠĠĠĠ ĠEither T ( Option . empty < Either < Int , ĠInt >> ()). map Left ( Option . functor ()) Ġ{ Ġit Ġ+ Ġ 1 Ġ} Ġ== ĠEither T ( Option . empty < Either < Int , ĠInt >> ()) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ