FMGVXDGYAU36I3WXAAM77IITTMQ3IF3J66FQKOD6IULF5VYXMB7AC eqCardName, eqQuantity, eqCategory :: Card -> Card -> BooleqCardName (Card {name = x}) (Card {name = y}) = x == yeqQuantity (Card {quantity = x}) (Card {quantity = y}) = x == yeqCategory (Card {category = x}) (Card {category = y}) = x == y
partialEqCard :: Eq a => (Card -> a) -> Card -> Card -> BoolpartialEqCard f x y = f x == f y
go acc lx@(x:xs) ly@(y:ys)| x < y = go (Remove x : acc) xs ly| x > y = go (Add x : acc) lx ys
go acc lx@(x : xs) ly@(y : ys)| name x < name y = go (Remove x : acc) xs ly| name x > name y = go (Add x : acc) lx ys| not $ partialEqCard quantity x y =go( ChangeQuantity( (fromIntegral . unrefine . quantity $ y)- (fromIntegral . unrefine . quantity $ x)): acc)xsys