package Ġback to basic so op . domain . entities . item _ sale _ rules Ċ Ċ import Ġback to basic so op . domain . Error Ċ import Ġback to basic so op . domain . entities . Cart Ċ import Ġback to basic so op . domain . entities . Item Ċ import Ġback to basic so op . domain . entities . Item Sale Rule Ċ import Ġback to basic so op . shared . Either Ċ Ċ class ĠComposite Item Sale Rule ( private Ġval Ġrules : ĠSequence < Item Sale Rule >) Ġ: ĠItem Sale Rule Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġvalidate ( cart : ĠCart , Ġitem : ĠItem , Ġquantity : ĠInt ): ĠEither < Error , ĠUnit > Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( rule Ġin Ġrules ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġrule . validate ( cart , Ġitem , Ġquantity ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Ġis ĠEither . Left ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠEither . right ( Unit ) ĊĠĠĠ Ġ} Ċ }