[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

quasiquote limit cases

R5RS says:
  ... If no commas appear within the <template>, the result of
  evaluating `<template> is equivalent to the result of evaluating

The words EQUIVALENT and EQUIVALENCE appear in the specification of
EQV?, but not EQUAL? or EQ?.

If this paragraph means that `(a b c) must be EQV? to '(a b c), then
only implementations which share quoted constants comply; furthermore,
the value returned by `(a b c) is immutable (because it is shared with
a literal constant).

Is the intended meaning that `<template> is EQUAL? to '<template>?


The immutability of results returned by quasiquote is not specified as
far as I can tell.

In the "storage model" section R5RS says:

  In such systems literal constants and the strings returned by
  symbol->string are immutable objects, while all objects created by the
  other procedures listed in this report are mutable.

Since quasiquote is syntax, not procedure, it appears to be
unspecified whether its results are mutable.