[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: specification by implications and example
Shriram Krishnamurthi <shriram@xxxxxxxxxxx> writes:
> > But this is allowed:
> > (set! ((if (random) car cdr) x) v)
> But when Matthias asked whether the grammar was
> (set! exp exp)
> you said "No - that would be ambiguous". I took a guess as to what
> that might mean, but you say my guess at something that would be
> erroneous is "valid syntactically". So now I know neither what the
> comment about ambiguity refers to nor what the SRFI permits.
`((if (random) car cdr) x)' is not an expression in this context,
just like `x' is not an expresion in the context of `(set! x v)'.
In both cases, they could be called "lvalue expressions", but
Scheme does not have such a concept.
The indended definition is this and nothing more:
((set! (proc args ...) value) ;; Assuming Alternative 1
((setter proc) args ... value))
;; ((set! (proc args ...) value) ;; Assuming Alternative 2
;; ((setter proc) value args ...))
((set! var value)
(%%builtin-set! var value))))