isValidIdentifier (unpack -> c:cs) = validFirst c && validRest cs
  where validFirst c = isAlpha c || c == '-' || c == '_'
        validRest (c:cs) = (validFirst c || isDigit c) && validRest cs
        validRest "" = True

-- | Renders a path.
isValidIdentifier (unpack -> c:cs) = validFirst c && validRest cs
  where validFirst c = isAlpha c || c == '-' || c == '_'
        validRest (c:cs) = (validFirst c || isDigit c) && validRest cs
        validRest "" = True

-- | Renders a path.
isValidIdentifier (unpack -> c:cs) = validFirst c && validRest cs
  where validFirst c = isAlpha c || c == '-' || c == '_'
        validRest (c:cs) = (validFirst c || isDigit c) && validRest cs
        validRest "" = True

-- | Renders a path.