/** Ċ Ġ* ĠExtensions Ġused Ġto Ġcompose Ġfunctions , Ċ Ġ* Ġtaken Ġfrom Ġ[ arrow - kt ]( https :// github . com / arrow - kt / arrow / blob / 1 2 bfc 7 7 fe 4 4 8 4 4 eb ff 8 7 ce 7 a 2 4 4 f 4 1 8 a 3 4 d 0 6 3 a 1 / modules / core / arrow - syntax / src / main / kotlin / arrow / syntax / function / composition . kt ) Ċ Ġ*/ Ċ package Ġbase . core library . domain . extensions Ċ Ċ inline Ġin fix Ġfun Ġ< P 1 , ĠP 2 , ĠIP , ĠR > Ġ(( P 1 , ĠP 2 ) Ġ-> ĠIP ). and Then ( cross inline Ġf : Ġ( IP ) Ġ-> ĠR ): Ġ( P 1 , ĠP 2 ) Ġ-> ĠR Ġ= Ġforward Compose ( f ) Ċ Ċ inline Ġin fix Ġfun Ġ< P 1 , ĠIP , ĠR > Ġ(( P 1 ) Ġ-> ĠIP ). and Then ( cross inline Ġf : Ġ( IP ) Ġ-> ĠR ): Ġ( P 1 ) Ġ-> ĠR Ġ= Ġforward Compose ( f ) Ċ Ċ inline Ġin fix Ġfun Ġ< IP , ĠR > Ġ(() Ġ-> ĠIP ). and Then ( cross inline Ġf : Ġ( IP ) Ġ-> ĠR ): Ġ() Ġ-> ĠR Ġ= Ġforward Compose ( f ) Ċ Ċ inline Ġin fix Ġfun Ġ< P 1 , ĠP 2 , ĠIP , ĠR > Ġ(( P 1 , ĠP 2 ) Ġ-> ĠIP ). forward Compose ( cross inline Ġf : Ġ( IP ) Ġ-> ĠR ) Ġ= Ġ{ Ġp 1 : ĠP 1 , Ġp 2 : ĠP 2 Ġ-> ĊĠĠĠ Ġf ( this ( p 1 , Ġp 2 )) Ċ } Ċ Ċ inline Ġin fix Ġfun Ġ< P 1 , ĠIP , ĠR > Ġ(( P 1 ) Ġ-> ĠIP ). forward Compose ( cross inline Ġf : Ġ( IP ) Ġ-> ĠR ): Ġ( P 1 ) Ġ-> ĠR Ġ= Ġ{ Ġp 1 : ĠP 1 Ġ-> ĊĠĠĠ Ġf ( this ( p 1 )) Ċ } Ċ Ċ inline Ġin fix Ġfun Ġ< IP , ĠR > Ġ(() Ġ-> ĠIP ). forward Compose ( cross inline Ġf : Ġ( IP ) Ġ-> ĠR ): Ġ() Ġ-> ĠR Ġ= Ġ{ Ġf ( this ()) Ġ} Ċ Ċ inline Ġin fix Ġfun Ġ< IP , ĠR , ĠP 1 > Ġ(( IP ) Ġ-> ĠR ). compose ( cross inline Ġf : Ġ( P 1 ) Ġ-> ĠIP ): Ġ( P 1 ) Ġ-> ĠR Ġ= Ġ{ Ġp 1 : ĠP 1 Ġ-> Ġthis ( f ( p 1 )) Ġ}