Mon Mar 10 16:00:19 UTC 2008 Taylor R Campbell * Fix serious typo in recent change to SYNTACTIC-FILTER. Mon Mar 10 14:35:16 UTC 2008 Taylor R Campbell * Change S-expression client's SEXP/GUARANTEE-LAMBDA-BVL so that it checks for duplicate names. Mon Mar 10 14:34:23 UTC 2008 Taylor R Campbell * Fix Chicken client's CHICKEN/VALID-BVL? so that it checks whether the rest variable too is a duplicate. Mon Mar 10 14:34:04 UTC 2008 Taylor R Campbell * Change comment in Chicken client about DSSSL extended BVLs to suggest handling them elsewhere in a macro. Sun Mar 9 21:38:08 UTC 2008 Taylor R Campbell * Update Chicken client to reflect changes of name to `Riaxpander' and of public domain notice to copyright notice. Sun Mar 9 21:30:03 UTC 2008 Taylor R Campbell * Update MIT Scheme compile and load scripts to reflect changes of name to `Riaxpander' and of public domain notice to copyright notice. Sun Mar 9 21:28:21 UTC 2008 Taylor R Campbell * Update Scheme48 interface and package descriptions to reflect changes of name to `Riaxpander' and of public domain notice to copyright notice. Sun Mar 9 21:27:59 UTC 2008 Taylor R Campbell * Update S-expression client to reflect changes of name to `Riaxpander' and of public domain notice to copyright notice. Sun Mar 9 21:22:21 UTC 2008 Taylor R Campbell * Change name to `Riaxpander' from `Explicit Renaming Macros', and change public domain notices to copyright notices with pointers to the LICENCE file for licence terms and warranty disclaimer. Sun Mar 9 21:20:48 UTC 2008 Taylor R Campbell * Add LICENCE file containing licence terms and warranty disclaimer. Sun Mar 9 16:14:10 UTC 2008 Taylor R Campbell * Change Scheme48 client's SYNTACTIC-ENVIRONMENTS-INTERFACE to export SYNTACTIC-ENVIRONMENT/PARAMETERS, so that users can create new kinds of child environments. Sun Mar 9 15:34:06 UTC 2008 Taylor R Campbell * Change Chicken client to use a parameter for the variable location uid, rather than a global variable. Sun Mar 9 15:32:57 UTC 2008 Taylor R Campbell * Change Chicken client to require certain standards compliance only when compiling or when loading into the interpreter. Sun Mar 9 15:31:50 UTC 2008 Taylor R Campbell * Change Chicken client to declare export of the temporary classifier utilities CAPTURE-SYNTACTIC-ENVIRONMENT &c. Sun Mar 9 15:26:38 UTC 2008 Taylor R Campbell * Update Scheme48's SYNTACTIC-CLASSIFIER-INTERFACE to reflect recent changes to the temporary classifier constructors. Sun Mar 9 15:19:15 UTC 2008 Taylor R Campbell * Change the names of the temporary classifiers to match MIT Scheme. Name changes: CALL-WITH-SYNTACTIC-ENVIRONMENT -> CAPTURE-SYNTACTIC-ENVIRONMENT CALL-WITH-SYNTACTIC-HISTORY -> CAPTURE-EXPANSION-HISTORY CALL-WITH-SYNTAX-ERROR-PROCEDURE -> CAPTURE-SYNTAX-ERROR-PROCEDURE The last is not in MIT Scheme; instead it has a different procedure also introduced, CALL-WITH-SYNTAX-ERROR-PROCDURE, which constructs a procedure that just takes a message and irritants without any history or subform selector, and so provides the least information. Sun Mar 9 14:48:03 UTC 2008 Taylor R Campbell * Change SYNTACTIC-FILTER so that it will do environment elision itself, with a broader test for elision, and update its use in classify.scm to reflect this. Sun Mar 9 14:46:25 UTC 2008 Taylor R Campbell * Update Chicken client to reflect recent change to FOR-EACH-SYNTACTIC-BINDING. Sun Mar 9 14:46:00 UTC 2008 Taylor R Campbell * Update S-expression client to reflect recent change to FOR-EACH-SYNTACTIC-BINDING. Sun Mar 9 14:43:51 UTC 2008 Taylor R Campbell * Change FOR-EACH-SYNTACTIC-BINDING so that the procedure is also passed the environment from which each binding is found. Thu Mar 6 04:30:46 UTC 2008 Taylor R Campbell * Update Scheme48's SYNTACTIC-ENVIRONMENTS-INTERFACE to export SYNTACTIC-ENVIRONMENT/TRANSFORMER-REFERENCE, which we shall want for calculating qualified references. Mon Feb 25 23:13:27 UTC 2008 Taylor R Campbell * Fake a fluid cell for the S-expression client's location uid so that it can be recursively invoked. Mon Feb 25 23:13:00 UTC 2008 Taylor R Campbell * Pass the usage environment to SYNTACTIC-TRANSFORMER-EXTEND so that it can simplify the transformer reference. Mon Sep 3 18:11:59 UTC 2007 Taylor R Campbell * Use EQV?, not EQ?, to compare variable locations in DENOTATION=?. Thu Aug 16 08:47:36 UTC 2007 Taylor R Campbell * Change PROCESS-SEGMENT-MATCH in SYNTAX-RULES compiler to explicitly rename, rather than to generate literal symbols. This bug has been lurking for over a decade! Thu Aug 16 08:29:15 UTC 2007 Taylor R Campbell * Eliminate uses of EQUAL? in SYNTAX-RULES compiler. Substitute EQ?, which is at least consistent with the rest of the code. I am not sure whether it is correct -- I think that it may be better to use the macro transformer's name comparator procedure --, but it seems to work. EQUAL? in Chicken and Gambit would blow up when given circular structures, and would also go to the unfortunate (and, I think, misguided -- see Mr Pitman's thoughts on the subject) trouble of descending into records with catastrophic effect. Mon Aug 13 07:19:22 UTC 2007 Taylor R Campbell * Fix reversed conditional branches in COND's expander for OR-style clauses. Thu Jul 12 14:57:50 UTC 2007 Taylor R Campbell * Fix omitted quote in SRFI 62 clause of COND transformer in standard.scm. Thu Jul 12 14:57:25 UTC 2007 Taylor R Campbell * Add test to Chicken client for standards compliance. Mon Jul 9 18:42:26 UTC 2007 Taylor R Campbell * Fix typo in comment in standard.scm: `semantics', not `sematics'. Thu Jul 5 16:48:09 UTC 2007 Taylor R Campbell * Change Chicken client to declare NAME=? exported. Thu Jul 5 16:47:45 UTC 2007 Taylor R Campbell * Update Chicken client to reflect recent change to the signature of variable classifiers, and to rename CHICKEN/REDUCE-REFERENCE to CHICKEN/COMPILE-REFERENCE. Thu Jul 5 16:42:27 UTC 2007 Taylor R Campbell * Update S-expression client to reflect recent change to the signature of variable classifiers, and to rename SEXP/REDUCE-REFERENCE to SEXP/COMPILE-REFERENCE. Thu Jul 5 15:23:17 UTC 2007 Taylor R Campbell * Change the classification of variables so that the variable classifier parameter receives the variable record, rather than its components. Wed Jul 4 21:04:56 UTC 2007 Taylor R Campbell * Add closure.scm to the relevant dependency lists in mit-compile.scm. Wed Jul 4 21:02:01 UTC 2007 Taylor R Campbell * Add synrules.scm to MIT Scheme compile & load scripts. Wed Jul 4 20:57:27 UTC 2007 Taylor R Campbell * Update Scheme48 interface and package descriptions to load and export the SYNTAX-RULES macrology in synrules.scm. Wed Jul 4 20:53:20 UTC 2007 Taylor R Campbell * Add SYNTAX-RULES and non-standard macrologies to the S-expression client's macrology. Wed Jul 4 17:44:28 UTC 2007 Taylor R Campbell * Fix confusing extraneous indentation in SCAN-TOP-LEVEL-FORM in classify.scm. Wed Jul 4 17:38:21 UTC 2007 Taylor R Campbell * Fix wrong number of arguments to the local CHOOSE-PARENT procedure in filtered syntactic environments' BIND! procedure. I am not sure whether it is even meaningful to bind a free name in a syntactic closure, and I have never encountered it in practice, so this error is unlikely to arise unless a compiler chokes on it (as Chicken's did). Wed Jul 4 17:36:52 UTC 2007 Taylor R Campbell * Fix typo in chicken.scm *again*: CDR-SELCTOR, not CDR-SELECTOR. (How did this pop up??) Wed Jul 4 17:35:39 UTC 2007 Taylor R Campbell * Avoid `#d' notation for decimal radix in chicken.scm, to work around the bug of absence for its support in Chicken. Wed Jul 4 17:21:57 UTC 2007 Taylor R Campbell * Major refactoring #3, introducing syntactic closures and cleaning up hygiene. - New file closure.scm replaces name.scm. The separate `alias' type has been discarded in favour of syntactic closures. Alias tokens are now gone. The introducer name is now handled as part of the syntactic environment, with a new kind of environment; see below on `transformer environments' for details. - The different types of environments have been rearranged to be more coherent: . Filtered environments have reversed their sense and are now used for syntactic closures, rather than for discriminating aliases inserted by explicit renaming. . Extended environments now exist only for local bindings. . Splicing extended environments are like extended environments, but after sealing, subsequent bindings are propagated up to the parent environment. These are for splicing LET-SYNTAX and LETREC-SYNTAX. . Transformer environments contain alias caches, so that entities other than the actual original macro transformer procedure invoked to generate the output can generate identical cached aliases. Transformer environments also remember the name by which the macro transformer was invoked, replacing the old alias introducer mechanism. - The SYNTACTIC-ALIAS procedure is no longer used to generate locations for variables; rather, it is used to generate aliases from a transformer environment's cache. Renaming procedures are implemented in terms of this. - Variable locations are now allocated by a new syntactic parameter for a location allocator. This means that they are lighter-weight -- for example, they can just be numbers --, and it frees up SYNTACTIC-ALIAS to have a more useful meaning. - Transformer procedures no longer return two values -- a transformed form to classify and the environment in which to classify it --; instead, they return syntactic closures if they must specify an environment other than the usage environment. Explicit renaming macro transformers no longer need to, because aliases are no longer marked by tokens. - Explicit renaming macro transformers are no longer special. The transformer macrology abstraction is now generalized to reflect this. MACROLOGY/ER-MACRO-TRANSFORMER has been replaced by MACROLOGY/NON-STANDARD-MACRO-TRANSFORMERS, which now implements ER-MACRO-TRANSFORMER, SC-MACRO-TRANSFORMER, & RSC-MACRO-TRANSFORMER. - Several names have been changed, and some have been introduced for the sake of consistency: Old New strip-syntax syntax->datum datum->syntax name/original-symbol name->symbol name->symbol [Not especially useful.] symbol->name generate-alias close-syntax (roughly) DATUM->SYNTAX and SYMBOL->NAME allow for name capture that can integrate with SYNTAX-RULES and other automatic renaming: (define-syntax if-it (sc-macro-transformer (lambda (form rename compare) (let ((it (symbol->name (car form) 'IT))) ;*** (let ((condition (close-syntax (cadr form) environment)) (consequent (make-syntactic-closure environment (list it) (caddr form))) (alternative (close-syntax (cadddr form) environment))) `(LET ((,it ,condition)) (IF ,it ,consequent ,alternative))))))) (if-it 5 it 3) ;Value: 5 (let ((it 5)) (if-it 3 it 1)) ;Value: 3 (define-syntax my-or (syntax-rules () ((MY-OR) #F) ((MY-OR x) x) ((MY-OR x y ...) ;; Here is the crucial point: SYNTAX-RULES can refer to the ;; variable IT. (IF-IT x IT (MY-OR y ...))))) (my-or #f 1 2) ;Value: 1 ;;; But it does not interfere with ordinary usage. (if-it 5 (my-or #f it) 3) ;Value: 5 Wed Jul 4 17:18:21 UTC 2007 Taylor R Campbell * Change reference in synrules.scm to this expander's name from `rex' to `riaxpander'. Wed Jul 4 17:17:08 UTC 2007 Taylor R Campbell * Major refactoring #3, updating Chicken code. Because of the extension for syntactic closures, and for yet more hypothetical ways to write macros, the prefix is now RIAXPANDER, not EXRENAME. Wed Jul 4 17:09:56 UTC 2007 Taylor R Campbell * Major refactoring #3, updating Scheme48 interface and package descriptions. Wed Jul 4 17:06:41 UTC 2007 Taylor R Campbell * Major refactoring #3, updating MIT Scheme load & compile scripts. Wed Jul 4 17:05:32 UTC 2007 Taylor R Campbell * Major refactoring #3, updating S-expression client. Tue Jul 3 18:37:04 UTC 2007 Taylor R Campbell * Change Chicken's EXRENAME:EXPAND to accept an environment parameter, rather than always to construct a new one at every invocation, and define EXRENAME:EXPAND-TOPLEVEL to call EXRENAME:EXPAND with either the default top-level environment or a fresh one if the expander has not been installed. Tue Jul 3 07:49:18 UTC 2007 Taylor R Campbell * Ignore COMPARE parameter inside lambda within MAKE-DEFINITION-MACROLOGY in standard.scm. Tue Jul 3 07:22:30 UTC 2007 Taylor R Campbell * Fix typo in Chicken client's declaration classifier: CDR-SELECTOR, not CDR-SELCTOR. This typo has persisted *far* longer than it should have... Tue Jul 3 07:01:05 UTC 2007 Taylor R Campbell * Export MAKE-SEXP-ENVIRONMENT from Scheme48's SYNTACTIC interface, now that SEXP/EXPAND and SEXP/EXPAND* require an environment argument. Tue Jul 3 06:50:47 UTC 2007 Taylor R Campbell * In SEXP/REDUCE-NAME, check for the absence of a parent environment, rather than the equality of the syntactic environment's operations with the S-expression operations, because SYNTACTIC-ENVIRONMENT/OPERATIONS is not meant to be exposed from the syntactic environment abstraction. Tue Jul 3 06:24:07 UTC 2007 Taylor R Campbell * Update Chicken client to reflect the recent introduction of R6RS body semantics. Although the portable S-expression client uses the R5RS body semantics, I suspect that Felix Winkelmann would prefer to see the R6RS semantics. The difference lies in whether the boundary between definitions and expressions in a body may be inside a BEGIN; that is, the R5RS forbids while the R6RS allows (let () (begin (define (f) 0) (f))). Tue Jul 3 06:12:18 UTC 2007 Taylor R Campbell * Update Scheme48's SYNTACTIC-CLASSIFIER-INTERFACE to reflect the recent introduction of separate body scanners for R5RS and R6RS semantics. Tue Jul 3 06:11:09 UTC 2007 Taylor R Campbell * Update S-expression client to reflect name change from SCAN-BODY to SCAN-R5RS-BODY. Tue Jul 3 06:08:18 UTC 2007 Taylor R Campbell * Implement R6RS body scanner; provide different names for the R5RS and the R6RS body scanners. Mon Jul 2 14:43:50 UTC 2007 Taylor R Campbell * Update Chicken client to reflect the recent change to the signature of variable classifiers. Mon Jul 2 14:43:41 UTC 2007 Taylor R Campbell * Update S-expression client to reflect recent change to the signature of variable classifiers. Mon Jul 2 14:43:27 UTC 2007 Taylor R Campbell * Change the signature of variable classifiers so that they receive the names by which variables were referenced in addition to the variables' internal names and locations. Sat Jun 30 23:20:18 UTC 2007 Taylor R Campbell * Change CHICKEN/REDUCE-NAME so that it strips tags off of aliases only if their meaning is the same as in the top-level environment. See the long description of the same patch for the S-expression back end for details. Sat Jun 30 22:34:20 UTC 2007 Taylor R Campbell * Change SEXP/REDUCE-NAME so that it strips tags from names only if their meaning is the same in the top-level environment. This fixes the bug exhibited by the following example: (define x 5) (define-syntax foo (syntax-rules () ((foo) x))) (let ((x 10)) 5) ;Expansion: ((lambda (x) x) 10) ;Value: 10 Sat Jun 30 22:33:59 UTC 2007 Taylor R Campbell * Change SEXP/META-EVALUATE so that it expands the expressions first before passing it to EVAL. Sat Jun 30 20:24:55 UTC 2007 Taylor R Campbell * Change SEXP/EXPAND[*] to accept an environment parameter, rather than always constructing a new one on every invocation. Fri Jun 15 05:16:26 UTC 2007 Taylor R Campbell * Add export declaration and SYNTAX-ERROR definition to the Chicken code. Currently, SYNTAX-ERROR ignores the history argument that it is passed. This should be changed. Fri Jun 15 05:16:08 UTC 2007 Taylor R Campbell * Add support for SYNTAX-RULES to the Chicken code. Fri Jun 15 05:14:56 UTC 2007 Taylor R Campbell * Add provisional implementation of SYNTAX-RULES cribbed from Scheme48. Sat Jun 2 15:46:50 UTC 2007 Taylor R Campbell * Add previously omitted standard keyword definition macrology to the S-expression client's environment. Thu May 24 19:13:41 UTC 2007 Taylor R Campbell * Add definition of INTERACTION-ENVIRONMENT to MIT Scheme port. Thu Apr 5 04:30:08 UTC 2007 Taylor R Campbell * Update Scheme48's SYNTACTIC-STANDARD-MACROLOGY-INTERFACE to reflect implementation of quasiquote. Mon Mar 5 00:12:31 UTC 2007 Taylor R Campbell * Add implementation of quasiquotation. Mon Mar 5 00:08:18 UTC 2007 Taylor R Campbell * Clarify why SEXP/META-EVALUATE in the S-expression client ignores its ENVIRONMENT parameter. Mon Mar 5 00:07:46 UTC 2007 Taylor R Campbell * Update S-expression client to reflect changes in major refactoring #2. Mon Mar 5 00:06:35 UTC 2007 Taylor R Campbell * Update Scheme48's SYNTACTIC-ENVIRONMENTS-INTERFACE and SYNTACTIC-STANDARD-MACROLOGY-INTERFACE to reflect changes in major refactoring #2. Mon Mar 5 00:06:16 UTC 2007 Taylor R Campbell * Update Chicken code to reflect changes in major refactoring #2. Mon Mar 5 00:02:53 UTC 2007 Taylor R Campbell * Major refactoring #2, cleaning up the macrologies. - MAKE-MACROLOGY has been eliminated in favour of separate definitions of MAKE-CLASSIFIER-MACROLOGY and MAKE-ER-MACRO-TRANSFORMER-MACROLOGY (which was formerly named MAKE-TRANSFORMER-MACROLOGY). The same goes for the `extended' macrologies used in standard.scm. - All of the standard macrologies have been split up, and those for the standard primitive syntax now accept expression compiler procedures as arguments instead of taking them from the syntactic environment. - As a consequence of the previous item, syntactic environment parameters no longer include compilers for the standard keywords. - DEFINE is now implemented as a transformer, rather than a classifier, so that it can generate references to LAMBDA in the correct environment. (What it did before was completely wrong.) Definitions now use the new facility for anonymous classifiers. - The keyword definition form (DEFINE-SYNTAX) now has its own macrology. - LET-SYNTAX and LETREC-SYNTAX now always implement Chez/R6RS semantics, instead of giving the option of an incorrect version of R5RS semantics which would introduce references to LET in the wrong environment, just like DEFINE did before with LAMBDA. - The stub definition of CALL-WITH-SYNTAX-ERROR-PROCEDURE in standard.scm has been eliminated in favour of the useful definition now in classify.scm, so that COND and CASE can report syntax errors that show expansion history correctly. Again, I may have forgotten further changes. Sun Mar 4 20:36:43 UTC 2007 Taylor R Campbell * Update Scheme48's SYNTACTIC-CLASSIFIER-INTERFACE to add the utilities for local classifiers and classification state capture. Sun Mar 4 20:34:22 UTC 2007 Taylor R Campbell * Add classification utilities for temporary classifiers and classification state capturing. The names I chose are inconsistent with MIT Scheme's names. I am not sure whether this matters, whether to adopt MIT Scheme's `CAPTURE-...' convention and (to be consistent) use CAPTURE-SYNTAX-ERROR-PROCDURE, or whether to adopt MIT Scheme's names fully. Sun Mar 4 08:06:15 UTC 2007 Taylor R Campbell * Fix bug in Chicken record printer installation, caused by DEFINE-RECORD-PRINTER's not working like I thought it did: it does not evaluate the record type, but instead implicitly quotes that argument. Sun Mar 4 07:12:02 UTC 2007 Taylor R Campbell * In Chicken code, cache or reset a common top-level syntactic environment in EXRENAME:INSTALL. Sun Mar 4 05:29:50 UTC 2007 Taylor R Campbell * Add MIT Scheme compile script. Sun Mar 4 05:08:12 UTC 2007 Taylor R Campbell * Major refactoring #1, updating Scheme48 code. Sun Mar 4 05:03:51 UTC 2007 Taylor R Campbell * Major refactoring #1, updating S-expression client. As in the Chicken code, names are now reduced as far as their meaning is preserved in the output. Sun Mar 4 04:51:10 UTC 2007 Taylor R Campbell * Major refactoring #1, updating Chicken code. - All record types visible to the user now have printers defined. - Names are reduced as far as their meaning is preserved in the environments where they are used before converting them into symbols with uniquifying suffixes. This means that top-level variable references will work correctly. - There is now support for declarations. - The combination classifier now reports syntax errors. Sun Mar 4 04:50:15 UTC 2007 Taylor R Campbell * Major refactoring #1. - More control over the classification of combinations is deferred to the clients now. Clients are expected to classify the operands, so that their classification can be delayed. - More control over the classification of variables is deferred to the clients, too. They are expected to return the history as well, so that they can recursively call the classifier; this permits what Common Lisp calls symbol macros, for example. (I think that that would be a bad idea, but it could be done nonetheless.) - The `expression' type is simplified. The only generic operation in the classification taxonomy is EXPRESSION?; clients are now expected to check for locations, to get their expression compilers; then for sequences, to classify and compile on their own; and then to default to expressions, to fetch their compilers. - The clients' compilers now just return the compiled output, rather than returning procedures to generate the compiled output. This ensures that recursive classification is delayed until necessary, and generally simplifies the whole mechanism. The compiled output can still be procedures, of course, if the client wishes the extra flexibility (e.g., for minimal alpha-renaming, to thread the used names through the the output generation). - There is no more expression coercion. As a consequence, CLASSIFY-EXPRESSION and friends are defined consistently with the other specialized classifiers. Syntactic environments no longer have an expression sequence compiler; clients are now expected to handle these themselves. - Internal definition processing has been *substantially* simplified, to the point that it no longer even warrants a scary warning notice that the following code may be terrifying to the timid reader. It all fits in a single page of code now (modulo the preceding definitions for scanning sequences in general). - Sequences are now closed over environments. - Definitions have been reduced to a single component: the procedure to scan the definition, after it has been processed, to yield a list of bindings created by the definition. This simplifies the structure of definitions, eliminates the `binder' indirection, and allows extensions such as declarations. - The `binding' record now has a `classifier' field, rather than an `expression' field, to delay classification of the right-hand side. Clients are now expected to call the value of this field and to compile its value as an expression. - Bindings now contain references to the environment that they will affect, so that their names can be reduced properly by looking them up in that environment. - A number of calls to the classifier that do syntax checks are now structured more appropriately for restarting. I may have forgotten about other details; this covers about a weeks' worth of work. (This actually includes at least two or three major refactorings. I gave up trying to record them properly in Darcs, however. I am sorry that you cannot examin the history of this code all its gruesome detail.) Sun Mar 4 01:18:12 UTC 2007 Taylor R Campbell * Define CLASSIFY-ERROR in Chicken code. Sun Mar 4 00:07:58 UTC 2007 Taylor R Campbell * Fix CHICKEN/SELF-EVALUATING? to reflect Chicken's actual semantics. Sat Mar 3 23:55:07 UTC 2007 Taylor R Campbell * Fix bugs in standard DO transformer: allow empty bodies and absent update forms. Sat Mar 3 23:46:40 UTC 2007 Taylor R Campbell * Update Scheme48's SYNTACTIC-HISTORY-INTERFACE to reflect definition of HISTORY/CURRENT-FORM, HISTORY/CURRENT-ENVIRONMENT, HISTORY/ORIGINAL-FORM, and HISTORY/ORIGINAL-ENVIRONMENT. Sat Mar 3 23:46:01 UTC 2007 Taylor R Campbell * Define HISTORY/CURRENT-FORM, HISTORY/CURRENT-ENVIRONMENT, HISTORY/ORIGINAL-FORM, and HISTORY/ORIGINAL-ENVIRONMENT. Sat Mar 3 23:42:34 UTC 2007 Taylor R Campbell * Add RECLASSIFY to Scheme48's SYNTACTIC-CLASSIFIER-INTERFACE. Sat Mar 3 23:29:37 UTC 2007 Taylor R Campbell * Update Chicken code to reflect simplified representation of variables. Sat Mar 3 23:14:28 UTC 2007 Taylor R Campbell * Update MIT Scheme record unparser methods to reflect simplified representation of variables. Sat Mar 3 23:02:03 UTC 2007 Taylor R Campbell * Update Scheme48 record disclosers in SYNTACTIC-DENOTATIONS to reflect simplified representation of variables. Sat Mar 3 22:58:19 UTC 2007 Taylor R Campbell * Update Scheme48's SYNTACTIC-DENOTATIONS-INTERFACE and SYNTACTIC-ENVIRONMENTS-INTERFACE to reflect simplified representation of variables. Sat Mar 3 22:55:53 UTC 2007 Taylor R Campbell * Update S-expression client to reflect simplified representation of variables. Sat Mar 3 22:38:47 UTC 2007 Taylor R Campbell * Simplify representation of variables. There is now only one kind of variable, instead of three. All variables have names and locations. What were formerly top-level variables are now variables that have top-level locations, whatever precisely that means. (In Scheme48, these would be `bindings' or `locations'; in T, `vcells'.) What were formerly local variables are now variables whose locations are their unique aliases. Free variables are no longer represented with first-class objects; instead syntactic environments just return #F. Hypothetically, we could modify the syntactic environment abstraction so that local variables have de Bruijn indices for locations, or whatever else the client of the engine wants to use. This is not currently possible, however. Sat Mar 3 22:35:54 UTC 2007 Taylor R Campbell * Return false instead of a free variable from S-expression top-level environments. Sat Mar 3 22:33:04 UTC 2007 Taylor R Campbell * Return false instead of a free variable from Chicken top-level syntactic environments. Sat Mar 3 22:21:13 UTC 2007 Taylor R Campbell * Fix bug in standard DEFINE-SYNTAX classifier whereby it would return only one value, the classification. Return two values instead: the classification and the history. Sat Mar 3 22:16:19 UTC 2007 Taylor R Campbell * Fix bug in standard CASE transformer caused by omitting an unquote. Sat Mar 3 22:02:34 UTC 2007 Taylor R Campbell * Rename INSTALL-EXPANDER to EXRENAME:INSTALL in Chicken code. Sat Mar 3 22:01:43 UTC 2007 Taylor R Campbell * Remove useless inclusion of sexp.scm in Chicken code. Sat Mar 3 21:53:45 UTC 2007 Taylor R Campbell * Add IGNORE declarations in initial value of HOOK/RECLASSIFY for its parameters. Sat Mar 3 21:52:43 UTC 2007 Taylor R Campbell * Eliminate superfluous IGNORE declaration in OVERLOADED-BINDER for HISTORY variable, which is used after all. Sat Mar 3 21:52:01 UTC 2007 Taylor R Campbell * Update Scheme48 record disclosers in SYNTACTIC-DENOTATIONS to reflect elimination of mechanism for reserved names. Sat Mar 3 21:49:46 UTC 2007 Taylor R Campbell * Update Scheme48's SYNTACTIC-DENOTATIONS-INTERFACE and SYNTACTIC-ENVIRONMENTS-INTERFACE to reflect the elimination of all mechanism for reserved names. Sat Mar 3 21:44:07 UTC 2007 Taylor R Campbell * Eliminate all mechanism for reserved names. I believe that in Bawden's original syntactic closures code, this mechanism was intended to detect mistakes such as (DEFINE A (+ A B)), i.e. premature references to variables that would not yet have values. This fails if we delay the classification of the right-hand sides of definitions, though, which we must do in order to support forward macro references; it doesn't catch all errors anyway, since it is a static, syntactic check; and it introduces complications that are not worth the trouble. Sat Mar 3 21:43:05 UTC 2007 Taylor R Campbell * Clarify comments about coercion of sequences to expressions and the internal definition scanning code. Sat Mar 3 21:36:33 UTC 2007 Taylor R Campbell * Update Scheme48's SYNTACTIC-HISTORY-INTERFACE to reflect elimination of NULL-HISTORY? and HISTORY/PARENT and definition of TOP-LEVEL-HISTORY?, HISTORY/PARENT-SELECTOR, and HISTORY/PARENT-HISTORY. Sat Mar 3 21:33:34 UTC 2007 Taylor R Campbell * Eliminate NULL-HISTORY? and HISTORY/PARENT. Define TOP-LEVEL-HISTORY?, HISTORY/PARENT-SELECTOR, and HISTORY/PARENT-HISTORY in their places. Sat Mar 3 21:28:54 UTC 2007 Taylor R Campbell * Clobber the entry in Chicken's line number database for the original reduction, not the current reduction, of the subform in question. Sat Mar 3 21:27:53 UTC 2007 Taylor R Campbell * Add (USE SRFI-1) and loading instructions to Chicken code. Sat Mar 3 21:22:09 UTC 2007 Taylor R Campbell * Add Chicken port. Sat Mar 3 21:18:33 UTC 2007 Taylor R Campbell * Add MIT Scheme load script. Sat Mar 3 21:18:20 UTC 2007 Taylor R Campbell * Add Scheme48 configuration. Sat Mar 3 20:41:13 UTC 2007 Taylor R Campbell * initial revision