package Ġarrow . effects Ċ Ċ import Ġarrow . core . Either Ċ import Ġarrow . core . Left Ċ import Ġarrow . core . Right Ċ import Ġarrow . effects . Coroutine Context Rx 2 Scheduler . as Scheduler Ċ import Ġarrow . effects . type classes . Disposable Ċ import Ġarrow . effects . type classes . Exit Case Ċ import Ġarrow . effects . type classes . Proc Ċ import Ġarrow . high er kind Ċ import Ġio . reactivex . Single Ċ import Ġio . reactivex . Single Emitter Ċ import Ġkotlin . coroutines . Coroutine Context Ċ Ċ fun Ġ< A > ĠSingle < A >. k (): ĠSingle K < A > Ġ= ĠSingle K ( this ) Ċ Ċ fun Ġ< A > ĠSingle K Of < A >. value (): ĠSingle < A > Ġ= Ġthis . fix (). single Ċ Ċ @ high er kind Ċ data Ġclass ĠSingle K < A >( val Ġsingle : ĠSingle < A >) Ġ: ĠSingle K Of < A >, ĠSingle KK in ded J < A > Ġ{ ĊĊĠ Ġfun Ġ< B > Ġmap ( f : Ġ( A ) Ġ-> ĠB ): ĠSingle K < B > Ġ= ĊĠĠĠ Ġsingle . map ( f ). k () ĊĊĠ Ġfun Ġ< B > Ġap ( fa : ĠSingle K Of <( A ) Ġ-> ĠB >): ĠSingle K < B > Ġ= ĊĠĠĠ Ġflat Map Ġ{ Ġa Ġ-> Ġfa . fix (). map Ġ{ Ġff Ġ-> Ġff ( a ) Ġ} Ġ} ĊĊĠ Ġfun Ġ< B > Ġflat Map ( f : Ġ( A ) Ġ-> ĠSingle K Of < B >): ĠSingle K < B > Ġ= ĊĠĠĠ Ġsingle . flatMap Ġ{ Ġf ( it ). fix (). single Ġ}. k () ĊĊĠ Ġfun Ġ< B > Ġbracket Case ( use : Ġ( A ) Ġ-> ĠSingle K Of < B >, Ġrelease : Ġ( A , ĠExit Case < Throwable >) Ġ-> ĠSingle K Of < Unit >): ĠSingle K < B > Ġ= ĊĠĠĠ Ġflat Map Ġ{ Ġa Ġ-> ĊĠĠĠĠĠ Ġuse ( a ). fix (). single ĊĠĠĠĠĠĠĠ Ġ. do On Success Ġ{ Ġrelease ( a , ĠExit Case . Completed ) Ġ} ĊĠĠĠĠĠĠĠ Ġ. do OnError Ġ{ Ġrelease ( a , ĠExit Case . Error ( it )) Ġ} ĊĠĠĠĠĠĠĠ Ġ. k () ĊĠĠĠ Ġ} ĊĊĠ Ġfun Ġhandle Error With ( function : Ġ( Throwable ) Ġ-> ĠSingle K < A >): ĠSingle K < A > Ġ= ĊĠĠĠ Ġsingle . onError Resume Next Ġ{ Ġt : ĠThrowable Ġ-> Ġfunction ( t ). single Ġ}. k () ĊĊĠ Ġfun Ġcontinue On ( ctx : ĠCor outine Context ): ĠSingle K < A > Ġ= ĊĠĠĠ Ġsingle . observe On ( ctx . as Scheduler ()). k () ĊĊĠ Ġfun Ġrun Async ( cb : Ġ( Either < Throwable , ĠA >) Ġ-> ĠSingle K Of < Unit >): ĠSingle K < Unit > Ġ= ĊĠĠĠ Ġsingle . flatMap Ġ{ Ġcb ( Right ( it )). value () Ġ}. onError Resume Next Ġ{ Ġcb ( Left ( it )). value () Ġ}. k () ĊĊĠ Ġfun Ġrun Async C ancellable ( cb : Ġ( Either < Throwable , ĠA >) Ġ-> ĠSingle K Of < Unit >): ĠSingle K < Disposable > Ġ= ĊĠĠĠ ĠSingle . from Callable Ġ{ ĊĠĠĠĠĠ Ġval Ġdis posable : Ġio . reactivex . dis pos ables . Disposable Ġ= Ġrun Async ( cb ). value (). subscribe () ĊĠĠĠĠĠ Ġval Ġdispose : Ġ() Ġ-> ĠUnit Ġ= Ġ{ Ġdis posable . dispose () Ġ} ĊĠĠĠĠĠ Ġdispose ĊĠĠĠ Ġ}. k () ĊĊĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ= ĊĠĠĠ Ġwhen Ġ( other ) Ġ{ ĊĠĠĠĠĠ Ġis ĠSingle K < *> Ġ-> Ġthis . single Ġ== Ġother . single ĊĠĠĠĠĠ Ġis ĠSingle < *> Ġ-> Ġthis . single Ġ== Ġother ĊĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ= Ġsingle . hashCode () ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġfun Ġ< A > Ġjust ( a : ĠA ): ĠSingle K < A > Ġ= ĊĠĠĠĠĠ ĠSingle . just ( a ). k () ĊĊĠĠĠ Ġfun Ġ< A > Ġraise Error ( t : ĠThrowable ): ĠSingle K < A > Ġ= ĊĠĠĠĠĠ ĠSingle . error < A >( t ). k () ĊĊĠĠĠ Ġoperator Ġfun Ġ< A > Ġinvoke ( fa : Ġ() Ġ-> ĠA ): ĠSingle K < A > Ġ= ĊĠĠĠĠĠ Ġdefer Ġ{ Ġjust ( fa ()) Ġ} ĊĊĠĠĠ Ġfun Ġ< A > Ġdefer ( fa : Ġ() Ġ-> ĠSingle K Of < A >): ĠSingle K < A > Ġ= ĊĠĠĠĠĠ ĠSingle . defer Ġ{ Ġfa (). value () Ġ}. k () ĊĊĠĠĠ Ġfun Ġ< A > Ġasync ( fa : ĠProc < A >): ĠSingle K < A > Ġ= ĊĠĠĠĠĠ ĠSingle . create Ġ{ Ġemitter : ĠSingle Emitter < A > Ġ-> ĊĠĠĠĠĠĠĠ Ġfa Ġ{ Ġeither : ĠEither < Throwable , ĠA > Ġ-> ĊĠĠĠĠĠĠĠĠĠ Ġeither . fold ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemitter . onError ( it ) ĊĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemitter . on Success ( it ) ĊĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}. k () ĊĊĠĠĠ Ġtail rec Ġfun Ġ< A , ĠB > Ġtail Rec M ( a : ĠA , Ġf : Ġ( A ) Ġ-> ĠSingle K Of < Either < A , ĠB >> ): ĠSingle K < B > Ġ{ ĊĠĠĠĠĠ Ġval Ġeither Ġ= Ġf ( a ). fix (). value (). blocking Get () ĊĠĠĠĠĠ Ġreturn Ġwhen Ġ( either ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠEither . Left Ġ-> Ġtail Rec M ( either . a , Ġf ) ĊĠĠĠĠĠĠĠ Ġis ĠEither . Right Ġ-> ĠSingle . just ( either . b ). k () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ