module Data.Loc.Loc
( Loc
, loc
, origin
, line
, column
, locShowsPrec
, locReadPrec
) where
import Data.Loc.Pos (Column, Line)
import Data.Loc.Internal.Prelude
data Loc = Loc
{ line :: Line
, column :: Column
}
deriving (Eq, Ord)
instance Show Loc
where
showsPrec = locShowsPrec
instance Read Loc
where
readPrec = locReadPrec
locShowsPrec :: Int -> Loc -> ShowS
locShowsPrec _ (Loc l c) =
shows l .
showString ":" .
shows c
locReadPrec :: ReadPrec Loc
locReadPrec =
Loc <$>
readPrec <*
readPrecChar ':' <*>
readPrec
loc :: Line -> Column -> Loc
loc = Loc
origin :: Loc
origin = loc 1 1