6.6.5.1 String Read Syntax

The read syntax for strings is an arbitrarily long sequence of characters enclosed in double quotes (").

Backslash is an escape character and can be used to insert the following special characters. \" and \\ are R5RS standard, \| is R7RS standard, the next seven are R6RS standard — notice they follow C syntax — and the remaining four are Guile extensions.

\\

Backslash character.

\"

Double quote character (an unescaped " is otherwise the end of the string).

\|

Vertical bar character.

\a

Bell character (ASCII 7).

\f

Formfeed character (ASCII 12).

\n

Newline character (ASCII 10).

\r

Carriage return character (ASCII 13).

\t

Tab character (ASCII 9).

\v

Vertical tab character (ASCII 11).

\b

Backspace character (ASCII 8).

\0

NUL character (ASCII 0).

\(

Open parenthesis. This is intended for use at the beginning of lines in multiline strings to avoid confusing Emacs lisp modes.

\ followed by newline (ASCII 10)

Nothing. This way if \ is the last character in a line, the string will continue with the first character from the next line, without a line break.

If the hungry-eol-escapes reader option is enabled, which is not the case by default, leading whitespace on the next line is discarded.

"foo\
  bar"
⇒ "foo  bar"
(read-enable 'hungry-eol-escapes)
"foo\
  bar"
⇒ "foobar"
\xHH

Character code given by two hexadecimal digits. For example \x7f for an ASCII DEL (127).

\uHHHH

Character code given by four hexadecimal digits. For example \u0100 for a capital A with macron (U+0100).

\UHHHHHH

Character code given by six hexadecimal digits. For example \U010402.

The following are examples of string literals:

"foo"
"bar plonk"
"Hello World"
"\"Hi\", he said."

The three escape sequences \xHH, \uHHHH and \UHHHHHH were chosen to not break compatibility with code written for previous versions of Guile. The R6RS specification suggests a different, incompatible syntax for hex escapes: \xHHHH; – a character code followed by one to eight hexadecimal digits terminated with a semicolon. If this escape format is desired instead, it can be enabled with the reader option r6rs-hex-escapes.

(read-enable 'r6rs-hex-escapes)

For more on reader options, See Reading Scheme Code.