summaryrefslogtreecommitdiff
path: root/compiler/utils/Pair.hs
diff options
context:
space:
mode:
authorSylvain Henry <sylvain@haskus.fr>2020-04-20 16:54:38 +0200
committerMarge Bot <ben+marge-bot@smart-cactus.org>2020-04-26 13:55:14 -0400
commitaf332442123878c1b61d236dce46418efcbe8750 (patch)
treeec4b332843cdd4fedb4aa60b11b7b8dba82a0764 /compiler/utils/Pair.hs
parentb0fbfc7582fb81314dc28a056536737fb5eeaa6e (diff)
downloadhaskell-af332442123878c1b61d236dce46418efcbe8750.tar.gz
Modules: Utils and Data (#13009)
Update Haddock submodule Metric Increase: haddock.compiler
Diffstat (limited to 'compiler/utils/Pair.hs')
-rw-r--r--compiler/utils/Pair.hs60
1 files changed, 0 insertions, 60 deletions
diff --git a/compiler/utils/Pair.hs b/compiler/utils/Pair.hs
deleted file mode 100644
index e9313f89b2..0000000000
--- a/compiler/utils/Pair.hs
+++ /dev/null
@@ -1,60 +0,0 @@
-{-
-A simple homogeneous pair type with useful Functor, Applicative, and
-Traversable instances.
--}
-
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE DeriveFunctor #-}
-
-module Pair ( Pair(..), unPair, toPair, swap, pLiftFst, pLiftSnd ) where
-
-#include "HsVersions.h"
-
-import GhcPrelude
-
-import Outputable
-import qualified Data.Semigroup as Semi
-
-data Pair a = Pair { pFst :: a, pSnd :: a }
- deriving (Functor)
--- Note that Pair is a *unary* type constructor
--- whereas (,) is binary
-
--- The important thing about Pair is that it has a *homogeneous*
--- Functor instance, so you can easily apply the same function
--- to both components
-
-instance Applicative Pair where
- pure x = Pair x x
- (Pair f g) <*> (Pair x y) = Pair (f x) (g y)
-
-instance Foldable Pair where
- foldMap f (Pair x y) = f x `mappend` f y
-
-instance Traversable Pair where
- traverse f (Pair x y) = Pair <$> f x <*> f y
-
-instance Semi.Semigroup a => Semi.Semigroup (Pair a) where
- Pair a1 b1 <> Pair a2 b2 = Pair (a1 Semi.<> a2) (b1 Semi.<> b2)
-
-instance (Semi.Semigroup a, Monoid a) => Monoid (Pair a) where
- mempty = Pair mempty mempty
- mappend = (Semi.<>)
-
-instance Outputable a => Outputable (Pair a) where
- ppr (Pair a b) = ppr a <+> char '~' <+> ppr b
-
-unPair :: Pair a -> (a,a)
-unPair (Pair x y) = (x,y)
-
-toPair :: (a,a) -> Pair a
-toPair (x,y) = Pair x y
-
-swap :: Pair a -> Pair a
-swap (Pair x y) = Pair y x
-
-pLiftFst :: (a -> a) -> Pair a -> Pair a
-pLiftFst f (Pair a b) = Pair (f a) b
-
-pLiftSnd :: (a -> a) -> Pair a -> Pair a
-pLiftSnd f (Pair a b) = Pair a (f b)