====================================================================
CharacterClass examples
====================================================================

The CharacterClass domain allows classes of characters to be defined
and manipulated efficiently.
 
Character classes can be created by giving either a string or a list
of characters.

  cl1:=charClass[char "a",char "e",char "i",char "o",char "u",char "y"]
   "aeiouy"
                      Type: CharacterClass

  cl2 := charClass "bcdfghjklmnpqrstvwxyz"
   "bcdfghjklmnpqrstvwxyz"
                      Type: CharacterClass

A number of character classes are predefined for convenience.

  digit()
   "0123456789"
                      Type: CharacterClass

  hexDigit()
   "0123456789ABCDEFabcdef"
                      Type: CharacterClass

  upperCase()
   "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
                      Type: CharacterClass

  lowerCase()
   "abcdefghijklmnopqrstuvwxyz"
                      Type: CharacterClass

  alphabetic()
   "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
                      Type: CharacterClass

  alphanumeric()
   "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
                      Type: CharacterClass

You can quickly test whether a character belongs to a class.

  member?(char "a", cl1)
   true
                      Type: Boolean

  member?(char "a", cl2)
   false
                      Type: Boolean

Classes have the usual set operations because the CharacterClass
domain belongs to the category FiniteSetAggregate(Character).

  intersect(cl1, cl2)
   "y"
                      Type: CharacterClass

  union(cl1,cl2)
   "abcdefghijklmnopqrstuvwxyz"
                      Type: CharacterClass

  difference(cl1,cl2)
   "aeiou"
                      Type: CharacterClass

  intersect(complement(cl1),cl2)
   "bcdfghjklmnpqrstvwxz"
                      Type: CharacterClass

You can modify character classes by adding or removing characters.

  insert!(char "a", cl2)
   "abcdfghjklmnpqrstvwxyz"
                      Type: CharacterClass

  remove!(char "b", cl2)
   "acdfghjklmnpqrstvwxyz"
                      Type: CharacterClass
 
See Also:
o )help Character
o )help String
o )show CharacterClass

