    module Data.String.Interpolate.Types
      ( InterpSegment(..)
      , Line, Lines
      )
    where

    data InterpSegment
      = Expression String
      | Verbatim String
      | Spaces Int
      | Tabs Int
      deriving (InterpSegment -> InterpSegment -> Bool
    (InterpSegment -> InterpSegment -> Bool)
    -> (InterpSegment -> InterpSegment -> Bool) -> Eq InterpSegment
    forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
    $c== :: InterpSegment -> InterpSegment -> Bool
    == :: InterpSegment -> InterpSegment -> Bool
    $c/= :: InterpSegment -> InterpSegment -> Bool
    /= :: InterpSegment -> InterpSegment -> Bool
    Eq, Int -> InterpSegment -> ShowS
    [InterpSegment] -> ShowS
    InterpSegment -> String
    (Int -> InterpSegment -> ShowS)
    -> (InterpSegment -> String)
    -> ([InterpSegment] -> ShowS)
    -> Show InterpSegment
    forall a.
    (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
    $cshowsPrec :: Int -> InterpSegment -> ShowS
    showsPrec :: Int -> InterpSegment -> ShowS
    $cshow :: InterpSegment -> String
    show :: InterpSegment -> String
    $cshowList :: [InterpSegment] -> ShowS
    showList :: [InterpSegment] -> ShowS
    Show)

    type Line = [InterpSegment]
    type Lines = [Line]