-- | Example variable name class you may want to use. module Zabt.Name where import Data.String import Zabt.Freshen data Name = Name Int String deriving (Eq, Ord) instance Show Name where show (Name n s) | n == 0 = '\'' : s | otherwise = '\'' : s ++ show n instance IsString Name where fromString = Name 0 instance Freshen Name where freshen (Name n s) = Name (n + 1) s