{-# LANGUAGE TypeOperators #-}

module HaskellWorks.Data.Product where

infixr :*:

data (:*:) a b = (:*:) a b
  deriving ((a :*: b) -> (a :*: b) -> Bool
((a :*: b) -> (a :*: b) -> Bool)
-> ((a :*: b) -> (a :*: b) -> Bool) -> Eq (a :*: b)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall a b. (Eq a, Eq b) => (a :*: b) -> (a :*: b) -> Bool
/= :: (a :*: b) -> (a :*: b) -> Bool
$c/= :: forall a b. (Eq a, Eq b) => (a :*: b) -> (a :*: b) -> Bool
== :: (a :*: b) -> (a :*: b) -> Bool
$c== :: forall a b. (Eq a, Eq b) => (a :*: b) -> (a :*: b) -> Bool
Eq, Int -> (a :*: b) -> ShowS
[a :*: b] -> ShowS
(a :*: b) -> String
(Int -> (a :*: b) -> ShowS)
-> ((a :*: b) -> String) -> ([a :*: b] -> ShowS) -> Show (a :*: b)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall a b. (Show a, Show b) => Int -> (a :*: b) -> ShowS
forall a b. (Show a, Show b) => [a :*: b] -> ShowS
forall a b. (Show a, Show b) => (a :*: b) -> String
showList :: [a :*: b] -> ShowS
$cshowList :: forall a b. (Show a, Show b) => [a :*: b] -> ShowS
show :: (a :*: b) -> String
$cshow :: forall a b. (Show a, Show b) => (a :*: b) -> String
showsPrec :: Int -> (a :*: b) -> ShowS
$cshowsPrec :: forall a b. (Show a, Show b) => Int -> (a :*: b) -> ShowS
Show)