package Ġarrow . opt ics Ċ Ċ import Ġarrow . core . Either Ċ import Ġarrow . core . Non Empty List Ċ import Ġarrow . core . Option Ċ import Ġarrow . core . Tuple 1 0 Ċ import Ġarrow . core . Tuple 4 Ċ import Ġarrow . core . Tuple 5 Ċ import Ġarrow . core . Tuple 6 Ċ import Ġarrow . core . Tuple 7 Ċ import Ġarrow . core . Tuple 8 Ċ import Ġarrow . core . Tuple 9 Ċ import Ġarrow . core . identity Ċ import Ġarrow . type classes . Mon oid Ċ import Ġkotlin . jvm . Jvm Static Ċ Ċ /** Ċ Ġ* ĠA Ġ[ Fold ] Ġis Ġan Ġopt ic Ġthat Ġallows Ġto Ġfocus Ġinto Ġstructure Ġand Ġget Ġmultiple Ġresults . Ċ Ġ* Ċ Ġ* Ġ[ Fold ] Ġis Ġa Ġgeneral isation Ġof Ġan Ġinstance Ġof Ġ[ Fold able ] Ġand Ġis Ġimplemented Ġin Ġterms Ġof Ġfold Map . Ċ Ġ* Ċ Ġ* Ġ@ param ĠS Ġthe Ġsource Ġof Ġa Ġ[ Fold ] Ċ Ġ* Ġ@ param ĠA Ġthe Ġtarget Ġof Ġa Ġ[ Fold ] Ċ Ġ*/ Ċ public Ġinterface ĠFold < S , ĠA > Ġ{ ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠMap Ġeach Ġtarget Ġto Ġa Ġtype ĠR Ġand Ġuse Ġa ĠMon oid Ġto Ġfold Ġthe Ġresults ĊĠĠ Ġ*/ ĊĠ Ġpublic Ġfun Ġ< R > Ġfold Map ( M : ĠMon oid < R >, Ġsource : ĠS , Ġmap : Ġ( focus : ĠA ) Ġ-> ĠR ): ĠR ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠCalculate Ġthe Ġnumber Ġof Ġtargets ĊĠĠ Ġ*/ ĊĠ Ġpublic Ġfun Ġsize ( source : ĠS ): ĠInt Ġ= ĊĠĠĠ Ġfold Map ( Mon oid . int (), Ġsource ) Ġ{ Ġ 1 Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠCheck Ġif Ġall Ġtargets Ġsatisfy Ġthe Ġpredicate ĊĠĠ Ġ*/ ĊĠ Ġpublic Ġfun Ġall ( source : ĠS , Ġpredicate : Ġ( focus : ĠA ) Ġ-> ĠBoolean ): ĠBoolean Ġ= ĊĠĠĠ Ġfold Map ( Mon oid . boolean (), Ġsource , Ġpredicate ) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġ` true ` Ġif Ġat Ġleast Ġone Ġfocus Ġmatches Ġthe Ġgiven Ġ[ predicate ]. ĊĠĠ Ġ*/ ĊĠ Ġpublic Ġfun Ġany ( source : ĠS , Ġpredicate : Ġ( focus : ĠA ) Ġ-> ĠBoolean ): ĠBoolean Ġ= ĊĠĠĠ Ġfold Map ( Mon oid . boolean Or (), Ġsource , Ġpredicate ) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠCheck Ġif Ġthere Ġis Ġno Ġtarget ĊĠĠ Ġ*/ ĊĠ Ġpublic Ġfun ĠisEmpty ( source : ĠS ): ĠBoolean Ġ= ĊĠĠĠ Ġfold Map ( Mon oid . boolean (), Ġsource ) Ġ{ Ġfalse Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠCheck Ġif Ġthere Ġis Ġat Ġleast Ġone Ġtarget ĊĠĠ Ġ*/ ĊĠ Ġpublic Ġfun Ġis NotEmpty ( source : ĠS ): ĠBoolean Ġ= ĊĠĠĠ Ġ! isEmpty ( source ) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠGet Ġthe Ġfirst Ġtarget Ġor Ġnull ĊĠĠ Ġ*/ ĊĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠ Ġpublic Ġfun Ġfirst OrNull ( source : ĠS ): ĠA ? Ġ{ ĊĠĠĠ Ġval Ġfold Ġ= Ġ:: fold Ġas Ġ( Mon oid < Any ? >, ĠS ) Ġ-> ĠAny ? ĊĠĠĠ Ġval Ġres Ġ= Ġfold ( object Ġ: ĠMon oid < Any ?> Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġempty (): ĠAny Ġ= ĠEMPTY _ VALUE ĊĠĠĠĠĠ Ġoverride Ġfun ĠAny ?. combine ( b : ĠAny ?): ĠAny ? Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== ĠEMPTY _ VALUE ) Ġb Ġelse Ġthis ĊĠĠĠ Ġ}, Ġsource ) ĊĠĠĠ Ġreturn ĠEMPTY _ VALUE . un box ( res ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠGet Ġthe Ġlast Ġtarget Ġor Ġnull ĊĠĠ Ġ*/ ĊĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠ Ġpublic Ġfun Ġlast OrNull ( source : ĠS ): ĠA ? Ġ{ ĊĠĠĠ Ġval Ġfold Ġ= Ġ:: fold Ġas Ġ( Mon oid < Any ? >, ĠS ) Ġ-> ĠAny ? ĊĠĠĠ Ġval Ġres Ġ= Ġfold ( object Ġ: ĠMon oid < Any ?> Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġempty (): ĠAny Ġ= ĠEMPTY _ VALUE ĊĠĠĠĠĠ Ġoverride Ġfun ĠAny ?. combine ( b : ĠAny ?): ĠAny ? Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( b Ġ!== ĠEMPTY _ VALUE ) Ġb Ġelse Ġthis ĊĠĠĠ Ġ}, Ġsource ) ĊĠĠĠ Ġreturn ĠEMPTY _ VALUE . un box ( res ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠFold Ġusing Ġthe Ġgiven Ġ[ Mon oid ] Ġinstance . ĊĠĠ Ġ*/ ĊĠ Ġpublic Ġfun Ġfold ( M : ĠMon oid < A >, Ġsource : ĠS ): ĠA Ġ= ĊĠĠĠ Ġfold Map ( M , Ġsource , Ġ:: identity ) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠAlias Ġfor Ġfold . ĊĠĠ Ġ*/ ĊĠ Ġpublic Ġfun Ġcombine All ( M : ĠMon oid < A >, Ġsource : ĠS ): ĠA Ġ= ĊĠĠĠ Ġfold Map ( M , Ġsource , Ġ:: identity ) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠGet Ġall Ġtargets Ġof Ġthe Ġ[ Fold ] ĊĠĠ Ġ*/ ĊĠ Ġpublic Ġfun ĠgetAll ( source : ĠS ): ĠList < A > Ġ= ĊĠĠĠ Ġfold Map ( Mon oid . list (), Ġsource , Ġ:: listOf ) ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠFind Ġthe Ġfirst Ġelement Ġmatching Ġthe Ġpredicate , Ġif Ġone Ġexists . ĊĠĠ Ġ*/ ĊĠ Ġpublic Ġfun Ġfind OrNull ( source : ĠS , Ġpredicate : Ġ( focus : ĠA ) Ġ-> ĠBoolean ): ĠA ? Ġ{ ĊĠĠĠ Ġval Ġres Ġ= Ġfold Map ( object Ġ: ĠMon oid < Any ?> Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġempty (): ĠAny Ġ= ĠEMPTY _ VALUE ĊĠĠĠĠĠ Ġoverride Ġfun ĠAny ?. combine ( b : ĠAny ?): ĠAny ? Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== ĠEMPTY _ VALUE ) Ġb Ġelse Ġthis ĊĠĠĠ Ġ}, Ġsource ) Ġ{ Ġfocus Ġ-> Ġif Ġ( predicate ( focus )) Ġfocus Ġelse ĠEMPTY _ VALUE Ġ} ĊĠĠĠ Ġreturn ĠEMPTY _ VALUE . un box ( res ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠCheck Ġwhether Ġat Ġleast Ġone Ġelement Ġsatisfies Ġthe Ġpredicate . ĊĠĠ Ġ* ĊĠĠ Ġ* ĠIf Ġthere Ġare Ġno Ġelements , Ġthe Ġresult Ġis Ġfalse . ĊĠĠ Ġ*/ ĊĠ Ġpublic Ġfun Ġexists ( source : ĠS , Ġpredicate : Ġ( focus : ĠA ) Ġ-> ĠBoolean ): ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġres Ġ= Ġfold Map ( object Ġ: ĠMon oid < Any ?> Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġempty (): ĠAny Ġ= ĠEMPTY _ VALUE ĊĠĠĠĠĠ Ġoverride Ġfun ĠAny ?. combine ( b : ĠAny ?): ĠAny ? Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== ĠEMPTY _ VALUE ) Ġb Ġelse Ġthis ĊĠĠĠ Ġ}, Ġsource ) Ġ{ Ġfocus Ġ-> Ġif Ġ( predicate ( focus )) Ġfocus Ġelse ĠEMPTY _ VALUE Ġ} ĊĠĠĠ Ġreturn Ġres Ġ!== ĠEMPTY _ VALUE ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠJoin Ġtwo Ġ[ Fold ] Ġwith Ġthe Ġsame Ġtarget ĊĠĠ Ġ*/ ĊĠ Ġpublic Ġin fix Ġfun Ġ< C > Ġchoice ( other : ĠFold < C , ĠA >): ĠFold < Either < S , ĠC >, ĠA > Ġ= ĊĠĠĠ Ġobject Ġ: ĠFold < Either < S , ĠC >, ĠA > Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġ< R > Ġfold Map ( M : ĠMon oid < R >, Ġsource : ĠEither < S , ĠC >, Ġmap : Ġ( focus : ĠA ) Ġ-> ĠR ): ĠR Ġ= ĊĠĠĠĠĠĠĠ Ġsource . fold ({ Ġac Ġ-> Ġthis @ Fold . fold Map ( M , Ġac , Ġmap ) Ġ}, Ġ{ Ġc Ġ-> Ġother . fold Map ( M , Ġc , Ġmap ) Ġ}) ĊĠĠĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠCreate Ġa Ġsum Ġof Ġthe Ġ[ Fold ] Ġand Ġa Ġtype Ġ[ C ] ĊĠĠ Ġ*/ ĊĠ Ġpublic Ġfun Ġ< C > Ġleft (): ĠFold < Either < S , ĠC >, ĠEither < A , ĠC >> Ġ= ĊĠĠĠ Ġobject Ġ: ĠFold < Either < S , ĠC >, ĠEither < A , ĠC >> Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġ< R > Ġfold Map ( M : ĠMon oid < R >, Ġsource : ĠEither < S , ĠC >, Ġmap : Ġ( Either < A , ĠC >) Ġ-> ĠR ): ĠR Ġ= ĊĠĠĠĠĠĠĠ Ġsource . fold ( ĊĠĠĠĠĠĠĠĠĠ Ġ{ Ġa 1 : ĠS Ġ-> Ġthis @ Fold . fold Map ( M , Ġa 1 ) Ġ{ Ġb Ġ-> Ġmap ( Either . Left ( b )) Ġ} Ġ}, ĊĠĠĠĠĠĠĠĠĠ Ġ{ Ġc Ġ-> Ġmap ( Either . Right ( c )) Ġ}) ĊĠĠĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠCreate Ġa Ġsum Ġof Ġa Ġtype Ġ[ C ] Ġand Ġthe Ġ[ Fold ] ĊĠĠ Ġ*/ ĊĠ Ġpublic Ġfun Ġ< C > Ġright (): ĠFold < Either < C , ĠS >, ĠEither < C , ĠA >> Ġ= ĊĠĠĠ Ġobject Ġ: ĠFold < Either < C , ĠS >, ĠEither < C , ĠA >> Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġ< R > Ġfold Map ( M : ĠMon oid < R >, Ġsource : ĠEither < C , ĠS >, Ġmap : Ġ( Either < C , ĠA >) Ġ-> ĠR ): ĠR Ġ= ĊĠĠĠĠĠĠĠ Ġsource . fold ({ Ġc Ġ-> Ġmap ( Either . Left ( c )) Ġ}, Ġ{ Ġa 1 Ġ-> Ġthis @ Fold . fold Map ( M , Ġa 1 ) Ġ{ Ġb Ġ-> Ġmap ( Either . Right ( b )) Ġ} Ġ}) ĊĠĠĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠCompose Ġa Ġ[ Fold ] Ġwith Ġa Ġ[ Fold ] ĊĠĠ Ġ*/ ĊĠ Ġpublic Ġin fix Ġfun Ġ< C > Ġcompose ( other : ĠFold < in ĠA , Ġout ĠC >): ĠFold < S , ĠC > Ġ= ĊĠĠĠ Ġobject Ġ: ĠFold < S , ĠC > Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġ< R > Ġfold Map ( M : ĠMon oid < R >, Ġsource : ĠS , Ġmap : Ġ( focus : ĠC ) Ġ-> ĠR ): ĠR Ġ= ĊĠĠĠĠĠĠĠ Ġthis @ Fold . fold Map ( M , Ġsource ) Ġ{ Ġc Ġ-> Ġother . fold Map ( M , Ġc , Ġmap ) Ġ} ĊĠĠĠ Ġ} ĊĊĠ Ġpublic Ġoperator Ġfun Ġ< C > Ġplus ( other : ĠFold < in ĠA , Ġout ĠC >): ĠFold < S , ĠC > Ġ= ĊĠĠĠ Ġthis Ġcompose Ġother ĊĊĠ Ġpublic Ġcompanion Ġobject Ġ{ ĊĊĠĠĠ Ġpublic Ġfun Ġ< A > Ġid (): ĠFold < A , ĠA > Ġ= ĊĠĠĠĠĠ ĠPI so . id () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ[ Fold ] Ġthat Ġtakes Ġeither Ġ[ S ] Ġor Ġ[ S ] Ġand Ġstri ps Ġthe Ġchoice Ġof Ġ[ S ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġ< S > Ġcod i ag onal (): ĠFold < Either < S , ĠS >, ĠS > Ġ= Ġobject Ġ: ĠFold < Either < S , ĠS >, ĠS > Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġ< R > Ġfold Map ( M : ĠMon oid < R >, Ġsource : ĠEither < S , ĠS >, Ġmap : Ġ( S ) Ġ-> ĠR ): ĠR Ġ= ĊĠĠĠĠĠĠĠ Ġsource . fold ( map , Ġmap ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġ[ Fold ] Ġbased Ġon Ġa Ġpredicate Ġof Ġthe Ġsource Ġ[ S ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġ< S > Ġselect ( p : Ġ( S ) Ġ-> ĠBoolean ): ĠFold < S , ĠS > Ġ= Ġobject Ġ: ĠFold < S , ĠS > Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġ< R > Ġfold Map ( M : ĠMon oid < R >, Ġsource : ĠS , Ġmap : Ġ( S ) Ġ-> ĠR ): ĠR Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( p ( source )) Ġmap ( source ) Ġelse ĠM . empty () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ[ Fold ] Ġthat Ġpoints Ġto Ġnothing ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġ< A , ĠB > Ġvoid (): ĠFold < A , ĠB > Ġ= ĊĠĠĠĠĠ ĠP Optional . void () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ[ Traversal ] Ġfor Ġ[ List ] Ġthat Ġfoc uses Ġin Ġeach Ġ[ A ] Ġof Ġthe Ġsource Ġ[ List ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġpublic Ġfun Ġ< A > Ġlist (): ĠFold < List < A >, ĠA > Ġ= ĊĠĠĠĠĠ ĠEvery . list () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ[ Traversal ] Ġfor Ġ[ Either ] Ġthat Ġhas Ġfocus Ġin Ġeach Ġ[ Either . Right ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ receiver Ġ[ Traversal . Companion ] Ġto Ġmake Ġit Ġstatic ally Ġavailable . ĊĠĠĠĠ Ġ* Ġ@ return Ġ[ Traversal ] Ġwith Ġsource Ġ[ Either ] Ġand Ġfocus Ġevery Ġ[ Either . Right ] Ġof Ġthe Ġsource . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġpublic Ġfun Ġ< L , ĠR > Ġeither (): ĠFold < Either < L , ĠR >, ĠR > Ġ= ĊĠĠĠĠĠ ĠEvery . either () ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġpublic Ġfun Ġ< K , ĠV > Ġmap (): ĠFold < Map < K , ĠV >, ĠV > Ġ= ĊĠĠĠĠĠ ĠEvery . map () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ[ Traversal ] Ġfor Ġ[ Non Empty List ] Ġthat Ġhas Ġfocus Ġin Ġeach Ġ[ A ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ receiver Ġ[ P Traversal . Companion ] Ġto Ġmake Ġit Ġstatic ally Ġavailable . ĊĠĠĠĠ Ġ* Ġ@ return Ġ[ Traversal ] Ġwith Ġsource Ġ[ Non Empty List ] Ġand Ġfocus Ġevery Ġ[ A ] Ġof Ġthe Ġsource . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġpublic Ġfun Ġ< A > Ġnon Empty List (): ĠFold < Non Empty List < A >, ĠA > Ġ= ĊĠĠĠĠĠ ĠEvery . non Empty List () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ[ Traversal ] Ġfor Ġ[ Option ] Ġthat Ġhas Ġfocus Ġin Ġeach Ġ[ arrow . core . Some ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ receiver Ġ[ P Traversal . Companion ] Ġto Ġmake Ġit Ġstatic ally Ġavailable . ĊĠĠĠĠ Ġ* Ġ@ return Ġ[ Traversal ] Ġwith Ġsource Ġ[ Option ] Ġand Ġfocus Ġin Ġevery Ġ[ arrow . core . Some ] Ġof Ġthe Ġsource . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġpublic Ġfun Ġ< A > Ġoption (): ĠFold < Option < A >, ĠA > Ġ= ĊĠĠĠĠĠ ĠEvery . option () ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġpublic Ġfun Ġ< A > Ġsequence (): ĠFold < Sequence < A >, ĠA > Ġ= ĊĠĠĠĠĠ ĠEvery . sequence () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ[ Traversal ] Ġfor Ġ[ String ] Ġthat Ġfoc uses Ġin Ġeach Ġ[ Char ] Ġof Ġthe Ġsource Ġ[ String ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ receiver Ġ[ P Traversal . Companion ] Ġto Ġmake Ġit Ġstatic ally Ġavailable . ĊĠĠĠĠ Ġ* Ġ@ return Ġ[ Traversal ] Ġwith Ġsource Ġ[ String ] Ġand Ġf oci Ġevery Ġ[ Char ] Ġin Ġthe Ġsource . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġpublic Ġfun Ġstring (): ĠFold < String , ĠChar > Ġ= ĊĠĠĠĠĠ ĠEvery . string () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ[ Traversal ] Ġto Ġfocus Ġinto Ġthe Ġfirst Ġand Ġsecond Ġvalue Ġof Ġa Ġ[ Pair ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġpublic Ġfun Ġ< A > Ġpair (): ĠFold < Pair < A , ĠA >, ĠA > Ġ= ĊĠĠĠĠĠ ĠEvery . pair () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ[ Traversal ] Ġto Ġfocus Ġinto Ġthe Ġfirst , Ġsecond Ġand Ġthird Ġvalue Ġof Ġa Ġ[ Triple ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġpublic Ġfun Ġ< A > Ġtriple (): ĠFold < Triple < A , ĠA , ĠA >, ĠA > Ġ= ĊĠĠĠĠĠ ĠEvery . triple () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ[ Traversal ] Ġto Ġfocus Ġinto Ġthe Ġfirst , Ġsecond , Ġthird Ġand Ġfourth Ġvalue Ġof Ġa Ġ[ arrow . core . Tuple 4 ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġpublic Ġfun Ġ< A > Ġtuple 4 (): ĠFold < Tuple 4 < A , ĠA , ĠA , ĠA >, ĠA > Ġ= ĊĠĠĠĠĠ ĠEvery . tuple 4 () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ[ P Traversal ] Ġto Ġfocus Ġinto Ġthe Ġfirst , Ġsecond , Ġthird , Ġfourth Ġand Ġf ifth Ġvalue Ġof Ġa Ġ[ arrow . core . Tuple 5 ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġpublic Ġfun Ġ< A > Ġtuple 5 (): ĠFold < Tuple 5 < A , ĠA , ĠA , ĠA , ĠA >, ĠA > Ġ= ĊĠĠĠĠĠ ĠEvery . tuple 5 () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ[ Traversal ] Ġto Ġfocus Ġinto Ġthe Ġfirst , Ġsecond , Ġthird , Ġfourth , Ġf ifth Ġand Ġsix th Ġvalue Ġof Ġa Ġ[ arrow . core . Tuple 6 ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġpublic Ġfun Ġ< A > Ġtuple 6 (): ĠFold < Tuple 6 < A , ĠA , ĠA , ĠA , ĠA , ĠA >, ĠA > Ġ= ĊĠĠĠĠĠ ĠEvery . tuple 6 () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ[ Traversal ] Ġto Ġfocus Ġinto Ġthe Ġfirst , Ġsecond , Ġthird , Ġfourth , Ġf ifth , Ġsix th Ġand Ġse vent h Ġvalue Ġof Ġa Ġ[ arrow . core . Tuple 7 ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġpublic Ġfun Ġ< A > Ġtuple 7 (): ĠFold < Tuple 7 < A , ĠA , ĠA , ĠA , ĠA , ĠA , ĠA >, ĠA > Ġ= ĊĠĠĠĠĠ ĠEvery . tuple 7 () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ[ Traversal ] Ġto Ġfocus Ġinto Ġthe Ġfirst , Ġsecond , Ġthird , Ġfourth , Ġf ifth , Ġsix th , Ġse vent h Ġand Ġeight Ġvalue Ġof Ġa Ġ[ arrow . core . Tuple 8 ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġpublic Ġfun Ġ< A > Ġtuple 8 (): ĠFold < Tuple 8 < A , ĠA , ĠA , ĠA , ĠA , ĠA , ĠA , ĠA >, ĠA > Ġ= ĊĠĠĠĠĠ ĠEvery . tuple 8 () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ[ Traversal ] Ġto Ġfocus Ġinto Ġthe Ġfirst , Ġsecond , Ġthird , Ġfourth , Ġf ifth , Ġsix th , Ġse vent h , Ġeight Ġand Ġn in th Ġvalue Ġof Ġa Ġ[ arrow . core . Tuple 9 ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġpublic Ġfun Ġ< A > Ġtuple 9 (): ĠFold < Tuple 9 < A , ĠA , ĠA , ĠA , ĠA , ĠA , ĠA , ĠA , ĠA >, ĠA > Ġ= ĊĠĠĠĠĠ ĠEvery . tuple 9 () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ[ Traversal ] Ġto Ġfocus Ġinto Ġthe Ġfirst , Ġsecond , Ġthird , Ġfourth , Ġf ifth , Ġsix th , Ġse vent h , Ġeight , Ġn in th Ġand Ġtent h Ġvalue Ġof Ġa Ġ[ arrow . core . Tuple 1 0 ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġpublic Ġfun Ġ< A > Ġtuple 1 0 (): ĠFold < Tuple 1 0 < A , ĠA , ĠA , ĠA , ĠA , ĠA , ĠA , ĠA , ĠA , ĠA >, ĠA > Ġ= ĊĠĠĠĠĠ ĠEvery . tuple 1 0 () ĊĠ Ġ} Ċ } Ċ