module Opaleye.Internal.Tag where data Tag = UnsafeTag Int start :: Tag start = UnsafeTag 1 next :: Tag -> Tag next = UnsafeTag . (+1) . unsafeUnTag unsafeUnTag :: Tag -> Int unsafeUnTag (UnsafeTag i) = i tagWith :: Tag -> String -> String tagWith t = appendShow (unsafeUnTag t) . (++ "_") appendShow :: Show a => a -> String -> String appendShow = flip (++) . show