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

Re: specification by implications and example

Matthias Felleisen <matthias@xxxxxxxxxxx> writes:

> Now this really raises the question about a formal specification. Could you
> please provide a specification of the syntax and semantics of this stuff? I
> would be happy with an operational semantics (i.e. an implementation in a
> Scheme with define-syntax) or a rewriting model or an extension of the
> denotational model or a definitional interpreter. (I am not teasing, I am
> just curious. I can imagine a model in each framework, but there are so
> many variations I can think of that I don't know how one could possibly
> specify a SRFI w/o doing that much.)

How about this change to the SRFI?  Could the Editors install this change,
assuming they don't find any mistakes?

--- srfi-17.html	Sun Jan 16 17:46:20 2000
+++ srfi-17.html.new	Sun Jan 16 17:45:11 2000
@@ -155,6 +155,22 @@
 is more intuitive, and has the big advantage that many
 existing functions already have proper setters.
 My tentative recommendation is alternative 1.
+The formal definition is thus:
+(define-syntax set!
+  (syntax-rules ()
+    ((set! (proc arg ...) value)  ;; Assuming Alternative 1
+     ((setter proc) arg ... value))
+    ;; ((set! (proc arg ...) value) ;; Assuming Alternative 2
+    ;;  ((setter proc) value arg ...))
+    ((set! var value)
+     (%%builtin-set! var value))))
+- where <code>%%builtin-set!</code> is the R5RS version of <code>set!</code>,
+and <code>setter</code> is a new standard procedure that maps procedures
+to their setters.  If the procedure has no setter, then <code>setter</code>
+signals an error.
 <h2>Standard setters</h2>
@@ -301,7 +317,7 @@
     <address>Editor: <a href="mailto:srfi-editors@xxxxxxxxxxxx";>Mike Sperber</a></address>
 <!-- Created: Wed Nov 10 03:14:43 PST 1999 -->
 <!-- hhmts start -->
-Last modified: Sun Jan 16 10:45:36 MET 2000
+Last modified: Sun Jan 16 17:45:11 PST 2000
 <!-- hhmts end -->

	--Per Bothner
per@xxxxxxxxxxx   http://www.bothner.com/~per/