[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: specification by implications and example
Matthias Felleisen <matthias@xxxxxxxx> writes:
> >> The special form set! is extended so the first operand can be a procedure
> >> and not just a variable.
> The examples that follow, however, are all of the shape (set! (procedure-name
> ...) ...).
> The examples that follow, however, are all of the shape
> (set! (procedure-name ...) ...)
That *is* a procedure application. I guess the correct R5RS terminology
is that the first set! operand can be a "procedure call".
> So, where is the syntax specification for this new/extended form? In this day
> and age, that's the
> minimum we can expect. Is it
> (set! exp exp)
No - that would be ambiguous.
> (set! (p exp ...) exp)
> or what?
> Also, if what we see is all there is to it, I would think that a syntax-rules
> specification can be written.
> If so, supply it.
((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))))
-where %%builtin-set! is set! as defined in R5RS.
I didn't include it partly because I don't believe
((setter proc) args ... value)
is a valid R5RS template. However, it's meaning should be clear.