module Test.DocTest.Location where import Data.Traversable (Traversable, traverse) import Data.Foldable (Foldable, foldMap) -- | A thing with a location attached. data Located pos a = Located pos a deriving (Eq, Show) instance Functor (Located pos) where fmap f (Located loc a) = Located loc $ f a instance Foldable (Located pos) where foldMap f (Located _loc a) = f a instance Traversable (Located pos) where traverse f (Located loc a) = fmap (Located loc) $ f a -- | Discard location information. unLoc :: Located pos a -> a unLoc (Located _ a) = a