package Ġarrow . instances Ċ Ċ import Ġarrow . Kind Ċ import Ġarrow . core .* Ċ import Ġarrow . data . Either T Ċ import Ġarrow . data . Either TO f Ċ import Ġarrow . data . Either TP art ial Of Ċ import Ġarrow . data . fix Ċ import Ġarrow . type classes .* Ċ Ċ interface ĠEither TF un ctor Instance < F , ĠL > Ġ: ĠFun ctor < Either TP art ial Of < F , ĠL >> Ġ{ ĊĊĠ Ġfun ĠFF (): ĠFun ctor < F > ĊĊĠ Ġoverride Ġfun Ġ< A , ĠB > ĠKind < Either TP art ial Of < F , ĠL >, ĠA >. map ( f : Ġ( A ) Ġ-> ĠB ): ĠEither T < F , ĠL , ĠB > Ġ= Ġfix (). map ( FF (), Ġ{ Ġf ( it ) Ġ}) Ċ } Ċ Ċ interface ĠEither T Applic ative Instance < F , ĠL > Ġ: ĠEither TF un ctor Instance < F , ĠL >, ĠApplic ative < Either TP art ial Of < F , ĠL >> Ġ{ ĊĊĠ Ġfun ĠMF (): ĠMonad < F > ĊĊĠ Ġoverride Ġfun Ġ< A > Ġjust ( a : ĠA ): ĠEither T < F , ĠL , ĠA > Ġ= ĠEither T . just ( MF (), Ġa ) ĊĊĠ Ġoverride Ġfun Ġ< A , ĠB > ĠKind < Either TP art ial Of < F , ĠL >, ĠA >. map ( f : Ġ( A ) Ġ-> ĠB ): ĠEither T < F , ĠL , ĠB > Ġ= Ġfix (). map ( MF (), Ġ{ Ġf ( it ) Ġ}) ĊĊĠ Ġoverride Ġfun Ġ< A , ĠB > ĠKind < Either TP art ial Of < F , ĠL >, ĠA >. ap ( ff : ĠKind < Either TP art ial Of < F , ĠL >, Ġ( A ) Ġ-> ĠB >): ĠEither T < F , ĠL , ĠB > Ġ= ĊĠĠĠ Ġfix (). ap ( MF (), Ġff ) Ċ } Ċ Ċ interface ĠEither T Monad Instance < F , ĠL > Ġ: ĠEither T Applic ative Instance < F , ĠL >, ĠMonad < Either TP art ial Of < F , ĠL >> Ġ{ ĊĊĠ Ġoverride Ġfun Ġ< A , ĠB > ĠKind < Either TP art ial Of < F , ĠL >, ĠA >. map ( f : Ġ( A ) Ġ-> ĠB ): ĠEither T < F , ĠL , ĠB > Ġ= Ġfix (). map ( MF (), Ġ{ Ġf ( it ) Ġ}) ĊĊĠ Ġoverride Ġfun Ġ< A , ĠB > ĠKind < Either TP art ial Of < F , ĠL >, ĠA >. ap ( ff : ĠKind < Either TP art ial Of < F , ĠL >, Ġ( A ) Ġ-> ĠB >): ĠEither T < F , ĠL , ĠB > Ġ= ĊĠĠĠ Ġfix (). ap ( MF (), Ġff ) ĊĊĠ Ġoverride Ġfun Ġ< A , ĠB > ĠKind < Either TP art ial Of < F , ĠL >, ĠA >. flatMap ( f : Ġ( A ) Ġ-> ĠKind < Either TP art ial Of < F , ĠL >, ĠB >): ĠEither T < F , ĠL , ĠB > Ġ= Ġfix (). flatMap ( MF (), Ġ{ Ġf ( it ). fix () Ġ}) ĊĊĠ Ġoverride Ġfun Ġ< A , ĠB > Ġtail Rec M ( a : ĠA , Ġf : Ġ( A ) Ġ-> ĠEither TO f < F , ĠL , ĠEither < A , ĠB >> ): ĠEither T < F , ĠL , ĠB > Ġ= ĊĠĠĠ ĠEither T . tail Rec M ( MF (), Ġa , Ġf ) Ċ } Ċ Ċ interface ĠEither T Applic ative Error Instance < F , ĠL > Ġ: ĠEither T Applic ative Instance < F , ĠL >, ĠApplic ative Error < Either TP art ial Of < F , ĠL >, ĠL > Ġ{ ĊĊĠ Ġoverride Ġfun Ġ< A > ĠKind < Either TP art ial Of < F , ĠL >, ĠA >. handleError With ( f : Ġ( L ) Ġ-> ĠKind < Either TP art ial Of < F , ĠL >, ĠA >): ĠEither T < F , ĠL , ĠA > Ġ= ĠMF (). run Ġ{ ĊĠĠĠ ĠEither T ( fix (). value . flatMap ({ ĊĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠEither . Left Ġ-> Ġf ( it . a ). fix (). value ĊĠĠĠĠĠĠĠ Ġis ĠEither . Right Ġ-> Ġjust ( it ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ})) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġ< A > Ġraise Error ( e : ĠL ): ĠEither T < F , ĠL , ĠA > Ġ= ĠEither T ( MF (). just ( Left ( e ))) Ċ } Ċ Ċ interface ĠEither T Monad Error Instance < F , ĠL > Ġ: ĠEither T Applic ative Error Instance < F , ĠL >, ĠEither T Monad Instance < F , ĠL >, ĠMonad Error < Either TP art ial Of < F , ĠL >, ĠL > Ċ Ċ interface ĠEither TF old able Instance < F , ĠL > Ġ: ĠFold able < Either TP art ial Of < F , ĠL >> Ġ{ ĊĊĠ Ġfun ĠF FF (): ĠFold able < F > ĊĊĠ Ġoverride Ġfun Ġ< B , ĠC > ĠKind < Either TP art ial Of < F , ĠL >, ĠB >. fold Left ( b : ĠC , Ġf : Ġ( C , ĠB ) Ġ-> ĠC ): ĠC Ġ= Ġfix (). fold Left ( FFF (), Ġb , Ġf ) ĊĊĠ Ġoverride Ġfun Ġ< B , ĠC > ĠKind < Either TP art ial Of < F , ĠL >, ĠB >. fold Right ( lb : ĠEval < C >, Ġf : Ġ( B , ĠEval < C >) Ġ-> ĠEval < C >): ĠEval < C > Ġ= ĊĠĠĠ Ġfix (). fold Right ( FFF (), Ġlb , Ġf ) Ċ } Ċ Ċ interface ĠEither T Tra verse Instance < F , ĠL > Ġ: ĠEither TF un ctor Instance < F , ĠL >, ĠEither TF old able Instance < F , ĠL >, ĠTra verse < Either TP art ial Of < F , ĠL >> Ġ{ ĊĊĠ Ġfun ĠTF (): ĠTra verse < F > ĊĊĠ Ġoverride Ġfun Ġ< A , ĠB > ĠKind < Either TP art ial Of < F , ĠL >, ĠA >. map ( f : Ġ( A ) Ġ-> ĠB ): ĠEither T < F , ĠL , ĠB > Ġ= Ġfix (). map ( TF (), Ġ{ Ġf ( it ) Ġ}) ĊĊĠ Ġoverride Ġfun Ġ< G , ĠB , ĠC > ĠKind < Either TP art ial Of < F , ĠL >, ĠB >. traverse ( AP : ĠApplic ative < G >, Ġf : Ġ( B ) Ġ-> ĠKind < G , ĠC >): ĠKind < G , ĠEither T < F , ĠL , ĠC >> Ġ= ĊĠĠĠ Ġfix (). traverse ( TF (), ĠAP , Ġf ) Ċ } Ċ Ċ interface ĠEither TS em ig roup K Instance < F , ĠL > Ġ: ĠSem ig roup K < Either TP art ial Of < F , ĠL >> Ġ{ ĊĠ Ġfun ĠMF (): ĠMonad < F > ĊĊĠ Ġoverride Ġfun Ġ< A > ĠKind < Either TP art ial Of < F , ĠL >, ĠA >. combine K ( y : ĠKind < Either TP art ial Of < F , ĠL >, ĠA >): ĠEither T < F , ĠL , ĠA > Ġ= ĊĠĠĠ Ġfix (). combine K ( MF (), Ġy ) Ċ } Ċ Ċ fun Ġ< F , ĠA , ĠB , ĠC > ĠEither TO f < F , ĠA , ĠB >. fold Left ( FF : ĠFold able < F >, Ġb : ĠC , Ġf : Ġ( C , ĠB ) Ġ-> ĠC ): ĠC Ġ= ĊĠ ĠFF . compose ( Either . fold able < A > ()). fold LC ( fix (). value , Ġb , Ġf ) Ċ Ċ fun Ġ< F , ĠA , ĠB , ĠC > ĠEither TO f < F , ĠA , ĠB >. fold Right ( FF : ĠFold able < F >, Ġlb : ĠEval < C >, Ġf : Ġ( B , ĠEval < C >) Ġ-> ĠEval < C >): ĠEval < C > Ġ= ĠFF . compose ( Either . fold able < A > ()). run Ġ{ ĊĠ Ġfix (). value . fold RC ( lb , Ġf ) Ċ } Ċ Ċ fun Ġ< F , ĠA , ĠB , ĠG , ĠC > ĠEither TO f < F , ĠA , ĠB >. traverse ( FF : ĠTra verse < F >, ĠGA : ĠApplic ative < G >, Ġf : Ġ( B ) Ġ-> ĠKind < G , ĠC >): ĠKind < G , ĠEither T < F , ĠA , ĠC >> Ġ{ ĊĠ Ġval Ġfa : ĠKind < G , ĠKind < Nested < F , ĠEither Partial Of < A >>, ĠC >> Ġ= ĠComp osed Tra verse ( FF , ĠEither . traverse (), ĠEither . mon ad < A > ()). traverse C ( fix (). value , Ġf , ĠGA ) ĊĠ Ġreturn ĠGA . run Ġ{ Ġfa . map ({ ĠEither T ( FF . run Ġ{ Ġit . un nest (). map ({ Ġit . fix () Ġ}) Ġ}) Ġ}) Ġ} Ċ } Ċ Ċ fun Ġ< F , ĠG , ĠA , ĠB > ĠEither TO f < F , ĠA , ĠKind < G , ĠB >> . sequence ( FF : ĠTra verse < F >, ĠGA : ĠApplic ative < G >): ĠKind < G , ĠEither T < F , ĠA , ĠB >> Ġ= ĊĠ Ġtraverse ( FF , ĠGA , Ġ:: identity ) Ċ Ċ fun Ġ< F , ĠL > ĠEither T . Companion . functor ( FF : ĠFun ctor < F >): ĠFun ctor < Either TP art ial Of < F , ĠL >> Ġ= ĊĠ Ġobject Ġ: ĠEither TF un ctor Instance < F , ĠL > Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠFF (): ĠFun ctor < F > Ġ= ĠFF ĊĊĠ Ġ} Ċ Ċ fun Ġ< F , ĠL > ĠEither T . Companion . applic ative ( MF : ĠMonad < F >): ĠApplic ative < Either TP art ial Of < F , ĠL >> Ġ= ĊĠ Ġobject Ġ: ĠEither T Applic ative Instance < F , ĠL > Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠFF (): ĠFun ctor < F > Ġ= ĠMF ĊĊĠĠĠ Ġoverride Ġfun ĠMF (): ĠMonad < F > Ġ= ĠMF ĊĠ Ġ} Ċ Ċ fun Ġ< F , ĠL > ĠEither T . Companion . mon ad ( MF : ĠMonad < F >): ĠMonad < Either TP art ial Of < F , ĠL >> Ġ= ĊĠ Ġobject Ġ: ĠEither T Monad Instance < F , ĠL > Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠFF (): ĠFun ctor < F > Ġ= ĠMF ĊĊĠĠĠ Ġoverride Ġfun ĠMF (): ĠMonad < F > Ġ= ĠMF ĊĠ Ġ} Ċ Ċ fun Ġ< F , ĠL > ĠEither T . Companion . applic ative Error ( MF : ĠMonad < F >): ĠApplic ative Error < Either TP art ial Of < F , ĠL >, ĠL > Ġ= ĊĠ Ġobject Ġ: ĠEither T Applic ative Error Instance < F , ĠL > Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠFF (): ĠFun ctor < F > Ġ= ĠMF ĊĊĠĠĠ Ġoverride Ġfun ĠMF (): ĠMonad < F > Ġ= ĠMF ĊĠ Ġ} Ċ Ċ fun Ġ< F , ĠL > ĠEither T . Companion . mon ad Error ( MF : ĠMonad < F >): ĠMonad Error < Either TP art ial Of < F , ĠL >, ĠL > Ġ= ĊĠ Ġobject Ġ: ĠEither T Monad Error Instance < F , ĠL > Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠFF (): ĠFun ctor < F > Ġ= ĠMF ĊĊĠĠĠ Ġoverride Ġfun ĠMF (): ĠMonad < F > Ġ= ĠMF ĊĠ Ġ} Ċ Ċ fun Ġ< F , ĠA > ĠEither T . Companion . traverse ( FF : ĠTra verse < F >): ĠTra verse < Either TP art ial Of < F , ĠA >> Ġ= ĊĠ Ġobject Ġ: ĠEither T Tra verse Instance < F , ĠA > Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠFF (): ĠFun ctor < F > Ġ= ĠFF ĊĊĠĠĠ Ġoverride Ġfun ĠF FF (): ĠFold able < F > Ġ= ĠFF ĊĊĠĠĠ Ġoverride Ġfun ĠTF (): ĠTra verse < F > Ġ= ĠFF ĊĠ Ġ} Ċ Ċ fun Ġ< F , ĠA > ĠEither T . Companion . fold able ( FF : ĠTra verse < F >): ĠFold able < Either TP art ial Of < F , ĠA >> Ġ= ĊĠ Ġobject Ġ: ĠEither TF old able Instance < F , ĠA > Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠF FF (): ĠFold able < F > Ġ= ĠFF ĊĠ Ġ} Ċ Ċ fun Ġ< F , ĠL > ĠEither T . Companion . sem ig roup K ( MF : ĠMonad < F >): ĠSem ig roup K < Either TP art ial Of < F , ĠL >> Ġ= ĊĠ Ġobject Ġ: ĠEither TS em ig roup K Instance < F , ĠL > Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠMF (): ĠMonad < F > Ġ= ĠMF ĊĠ Ġ} Ċ Ċ class ĠEither T Context < F , ĠE >( val ĠMF : ĠMonad < F >) Ġ: ĠEither T Monad Error Instance < F , ĠE >, ĠEither TS em ig roup K Instance < F , ĠE > Ġ{ ĊĠ Ġoverride Ġfun ĠFF (): ĠFun ctor < F > Ġ= ĠMF ĊĠ Ġoverride Ġfun ĠMF (): ĠMonad < F > Ġ= ĠMF Ċ } Ċ Ċ class ĠEither T Context Part ially Applied < F , ĠE >( val ĠMF : ĠMonad < F >) Ġ{ ĊĠ Ġin fix Ġfun Ġ< A > Ġextensions ( f : ĠEither T Context < F , ĠE >. () Ġ-> ĠA ): ĠA Ġ= ĊĠĠĠ Ġf ( Either T Context ( MF )) Ċ } Ċ Ċ fun Ġ< F , ĠE > ĠFor Either T ( MF : ĠMonad < F >): ĠEither T Context Part ially Applied < F , ĠE > Ġ= ĊĠ ĠEither T Context Part ially Applied ( MF ) Ċ