module Stdlib.Data.Pair;
import Stdlib.Data.Pair.Base open public;
import Stdlib.Data.Bool.Base open;
import Stdlib.Data.String.Base open;
import Stdlib.Trait.Eq open;
import Stdlib.Trait.Ord open;
import Stdlib.Trait.Show open;
deriving instance
eqProductI {A B} {{Eq A}} {{Eq B}} : Eq (Pair A B);
deriving instance
ordProductI {A B} : {{Ord A}} -> {{Ord B}} -> Ord (Pair A B);
instance
showProductI {A B} : {{Show A}} -> {{Show B}} -> Show (Pair A B)
| {{mkShow showA}} {{mkShow showB}} :=
mkShow@{
show (p : Pair A B) : String :=
case p of a, b := "(" ++str showA a ++str " , " ++str showB b ++str ")";
};