packages feed

mockcat-1.0.0.0: src/Test/MockCat/Cons.hs

{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE DataKinds #-}
module Test.MockCat.Cons ((:>)(..), Head(..)) where

data a :> b = a :> b

instance (Show a, Show b) => Show (a :> b) where
  show (a :> b) = show a <> "," <> show b

instance (Eq a, Eq b) => Eq (a :> b) where
  (a :> b) == (a2 :> b2) = (a == a2) && (b == b2)

infixr 8 :>

-- | Marker type for constant value mock functions.
--   Used to distinguish constant values (Head :> Param r) from
--   regular mock functions (Param a :> rest).
data Head = Head
  deriving (Eq, Show)