package Ġcom . github . kotlin z . kotlin z . data . either Ċ Ċ import Ġcom . github . kotlin z . kotlin z . K 1 Ċ import Ġcom . github . kotlin z . kotlin z . type . applic ative . Applic ative Ċ Ċ interface ĠEither Applic ative < S >: ĠApplic ative < K 1 < Either . T , ĠS >> Ġ{ ĊĠ Ġoverride Ġfun Ġ< A > Ġpure ( v : ĠA ): ĠEither < S , ĠA > Ġ= ĠEither . Right ( v ) ĊĊĠ Ġoverride Ġfun Ġ< A , ĠB > Ġap ( f : ĠK 1 < K 1 < Either . T , ĠS >, Ġ( A ) Ġ-> ĠB >, Ġv : ĠK 1 < K 1 < Either . T , ĠS >, ĠA >): ĠEither < S , ĠB > Ġ{ ĊĠĠĠ Ġval Ġeither Ġ= ĠEither . narrow ( v ) ĊĠĠĠ Ġval Ġeither f Ġ= ĠEither . narrow ( f ) ĊĠĠĠ Ġreturn Ġwhen ( either f ) Ġ{ ĊĠĠĠĠĠ Ġis ĠEither . Right Ġ-> ĠEither . narrow ( f map ( either f . value , Ġeither )) ĊĠĠĠĠĠ Ġis ĠEither . Left Ġ-> ĠEither . Left ( either f . value ) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ