6.6.4.2 Iterating Over Character Sets

Character set cursors are a means for iterating over the members of a character sets. After creating a character set cursor with char-set-cursor, a cursor can be dereferenced with char-set-ref, advanced to the next member with char-set-cursor-next. Whether a cursor has passed past the last element of the set can be checked with end-of-char-set?.

Additionally, mapping and (un-)folding procedures for character sets are provided.

Scheme Procedure: char-set-cursor cs
C Function: scm_char_set_cursor (cs)

Return a cursor into the character set cs.

Scheme Procedure: char-set-ref cs cursor
C Function: scm_char_set_ref (cs, cursor)

Return the character at the current cursor position cursor in the character set cs. It is an error to pass a cursor for which end-of-char-set? returns true.

Scheme Procedure: char-set-cursor-next cs cursor
C Function: scm_char_set_cursor_next (cs, cursor)

Advance the character set cursor cursor to the next character in the character set cs. It is an error if the cursor given satisfies end-of-char-set?.

Scheme Procedure: end-of-char-set? cursor
C Function: scm_end_of_char_set_p (cursor)

Return #t if cursor has reached the end of a character set, #f otherwise.

Scheme Procedure: char-set-fold kons knil cs
C Function: scm_char_set_fold (kons, knil, cs)

Fold the procedure kons over the character set cs, initializing it with knil.

Scheme Procedure: char-set-unfold p f g seed [base_cs]
C Function: scm_char_set_unfold (p, f, g, seed, base_cs)

This is a fundamental constructor for character sets.

  • g is used to generate a series of “seed” values from the initial seed: seed, (g seed), (g^2 seed), (g^3 seed), …
  • p tells us when to stop – when it returns true when applied to one of the seed values.
  • f maps each seed value to a character. These characters are added to the base character set base_cs to form the result; base_cs defaults to the empty set.
Scheme Procedure: char-set-unfold! p f g seed base_cs
C Function: scm_char_set_unfold_x (p, f, g, seed, base_cs)

This is a fundamental constructor for character sets.

  • g is used to generate a series of “seed” values from the initial seed: seed, (g seed), (g^2 seed), (g^3 seed), …
  • p tells us when to stop – when it returns true when applied to one of the seed values.
  • f maps each seed value to a character. These characters are added to the base character set base_cs to form the result; base_cs defaults to the empty set.
Scheme Procedure: char-set-for-each proc cs
C Function: scm_char_set_for_each (proc, cs)

Apply proc to every character in the character set cs. The return value is not specified.

Scheme Procedure: char-set-map proc cs
C Function: scm_char_set_map (proc, cs)

Map the procedure proc over every character in cs. proc must be a character -> character procedure.