package Ġfp . kotlin . example . chapter 0 8 . solution Ċ Ċ import Ġfp . kotlin . example . chapter 0 4 . solution . cur ried Ċ import Ġfp . kotlin . example . chapter 0 8 .* Ċ Ċ /** Ċ Ġ* Ċ Ġ* ĠìĹ° ìĬµ ë¬¸ ìłľ Ġ 8 - 1 8 Ċ Ġ* Ċ Ġ* ĠEither ĠìĹĲ ëıĦ ĠëıĻ ìŀĳ íķĺëĬĶ Ġ`` sequence A `` Ġíķ¨ìĪĺ ë¥¼ Ġì¶Ķê°Ģ íķĺê³ł Ġíħ Į ìĬ¤íĬ¸ Ġíķ ´ë³´ ìŀĲ . Ċ Ġ* Ċ Ġ*/ Ċ fun Ġmain () Ġ{ ĊĊĠĠĠ Ġval Ġeither List : ĠCons < Right < Int >> Ġ= ĠCons ( Right ( 1 ), ĠCons ( Right ( 2 ), ĠCons ( Right ( 3 ), ĠNil ))) ĊĠĠĠ Ġrequire ( sequence A By Fold Right ( either List ) Ġ== ĠRight ( Cons ( 1 , ĠCons ( 2 , ĠCons ( 3 , ĠNil ))))) ĊĊĠĠĠ Ġval Ġeither List 2 : ĠCons < Either < String , ĠInt >> Ġ= ĠCons ( Right ( 1 ), ĠCons ( Left (" test "), ĠCons ( Right ( 3 ), ĠNil ))) ĊĠĠĠ Ġrequire ( sequence A By Fold Right ( either List 2 ) Ġ== ĠLeft (" test ")) Ċ Ċ } Ċ Ċ private Ġfun Ġ< T > Ġcons () Ġ= Ġ{ Ġx : ĠT , Ġxs : ĠFun List < T > Ġ-> ĠCons ( x , Ġxs ) Ġ} Ċ Ċ private Ġfun Ġ< L , ĠR > Ġsequence A By Fold Right ( ĊĠĠĠ Ġeither List : ĠFun List < Either < L , ĠR >> ): ĠEither < L , ĠFun List < R >> Ġ= ĊĠĠĠ Ġwhen Ġ( either List ) Ġ{ ĊĠĠĠĠĠĠĠ ĠNil Ġ-> ĠRight ( Nil ) ĊĠĠĠĠĠĠĠ Ġis ĠCons Ġ-> ĠEither . pure ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcons < R >(). cur ried ()) Ġapply Ġeither List . head Ġapply Ġsequence A By Fold Right ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeither List . tail ) ĊĠĠĠ Ġ} Ċ