## 5.3 Non standard read syntax

[read syntax] #| `...`|#
  A multiline ``block'' comment. May be nested. Implements SRFI-30 4)

[read syntax] #;EXPRESSION
  Treats `EXPRESSION` as a comment.

[read syntax] #,(CONSTRUCTORNAME DATUM ...)
  Allows user-defined extension of external representations. (For more information see the documentation for SRFI-105)

[read syntax] #'EXPRESSION
  An abbreviation for `(syntax EXPRESSION)`.

[read syntax] #:SYMBOL
  Syntax for keywords. Keywords are symbols that evaluate to themselves, and as such don't have to be quoted.

[read syntax] #`<<`TAG
  Specifies a multiline string constant. Anything up to a line equal to `TAG` will be returned as a single string:

      (define msg \#<<END
      "Hello, world!", she said.
      END
      )

  is equivalent to

      (define msg "\"Hello, world!\", she said.")

[read syntax] #`<`#TAG
  Similar to `#<<`, but allows substitution of embedded Scheme expressions prefixed with `#` and optionally enclosed in `{ ... }`. Two consecutive `#`s are translated to a single `#`:

      (define three 3)
      (display #<#EOF
      This is a simple string with an embedded `##' character
      and substituted expressions: (+ three 99) ==> #(+ three 99)
      (three is "#{three}")
      EOF
      )

  prints

      This is a simple string with an embedded `#' character
      and substituted expressions: (+ three 99) ==> 102
      (three is "3")

[read syntax] #`>` ... `<`#
  Abbreviation for `(declare (foreign-declare " ... "))`.

[read syntax] #`>?` ... `<`#
  Abbreviation for `(declare (foreign-parse " ... "))`.

[read syntax] #`>!` ... `<`#
  Abbreviation for

      (declare
        (foreign-declare " ... ")
        (foreign-parse " ... ") )

4 http://srfi.schemers.org/srfi-30/srfi-30.html

5 http://srfi.schemers.org/srfi-10/srfi-10.html