isNameChar :: Char -> Bool
isNameChar c =
  let codepoint = ord c
      inRange (a, b) = a <= codepoint && codepoint <= b
  in isLetter c
     || isDigit c
     || c == '-'
     || c == '.'
     || c == (chr 0xB7)
     || any inRange nameCharRanges
isNameChar :: Char -> Bool
isNameChar c =
  let codepoint = ord c
      inRange (a, b) = a <= codepoint && codepoint <= b
  in isLetter c
     || isDigit c
     || c == '-'
     || c == '.'
     || c == (chr 0xB7)
     || any inRange nameCharRanges
isNameChar c =
  let codepoint = ord c
      inRange (a, b) = a <= codepoint && codepoint <= b
  in isLetter c
     || isDigit c
     || c == '-'
     || c == '.'
     || c == (chr 0xB7)
     || any inRange nameCharRanges