{-# LANGUAGE CPP #-} module Data.Pair where #if __GLASGOW_HASKELL__ < 710 import Control.Applicative #endif infixl 2 :/: data Pair a = (:/:) {leftOf :: a, rightOf :: a} deriving (Show) instance Functor Pair where fmap f (a :/: b) = f a :/: f b instance Applicative Pair where pure a = a :/: a (f :/: g) <*> (a :/: b) = f a :/: g b