mit-scheme.git
6 years agoExport scode-expression?.
Chris Hanson [Fri, 27 Apr 2018 04:47:59 +0000 (21:47 -0700)]
Export scode-expression?.

6 years agoEliminate now-deprecated references to hash-table procedures.
Chris Hanson [Thu, 26 Apr 2018 07:03:07 +0000 (00:03 -0700)]
Eliminate now-deprecated references to hash-table procedures.

6 years agoUpdate hash-table documentation in the reference manual.
Chris Hanson [Thu, 26 Apr 2018 06:48:49 +0000 (23:48 -0700)]
Update hash-table documentation in the reference manual.

6 years agoMark all of the hash-table renames as deprecated.
Chris Hanson [Thu, 26 Apr 2018 06:48:22 +0000 (23:48 -0700)]
Mark all of the hash-table renames as deprecated.

6 years agoRename hash-table-entry-type:key{/,&}datum-weak.
Chris Hanson [Thu, 26 Apr 2018 06:21:44 +0000 (23:21 -0700)]
Rename hash-table-entry-type:key{/,&}datum-weak.

This makes it consistent with the ephemeron naming.

6 years agoFix missed reference.
Chris Hanson [Thu, 26 Apr 2018 06:18:24 +0000 (23:18 -0700)]
Fix missed reference.

6 years agoRewrite the object hashing facility.
Chris Hanson [Wed, 25 Apr 2018 05:56:12 +0000 (22:56 -0700)]
Rewrite the object hashing facility.

* Names have been changed to avoid conflicts with hash tables, and for
  consistency.  The old names are still available as deprecated renames.

* New implementation is much easier to read.

6 years agoAdd type and constructors for datum-weak hash tables.
Chris Hanson [Wed, 25 Apr 2018 05:55:42 +0000 (22:55 -0700)]
Add type and constructors for datum-weak hash tables.

6 years agoFix typo.
Chris Hanson [Wed, 25 Apr 2018 05:42:41 +0000 (22:42 -0700)]
Fix typo.

6 years agoRefactor hash-table to clean up some issues noted in previous change.
Chris Hanson [Wed, 25 Apr 2018 03:50:37 +0000 (20:50 -0700)]
Refactor hash-table to clean up some issues noted in previous change.

* Export former %make-hash-table as make-hash-table*.

* Create new make-hash-table-type* which can create a type given an equality
  predicate and some keyword options.  If the equality predicate has registered
  properties, no additional options may be necessary, except perhaps to choose
  the entry type (which is specified by name).

* Change make-hash-table to accept the same options as make-hash-table-type* and
  to use the same defaulting.

* Change internal procedure follow-memo-crap to hash-metadata, which more
  accurately reflects its purpose: to get a properties table for the primary
  hash parameters.

6 years agoRename set-equality-predicate-hasher! -> set-equality-predicate-properties!.
Chris Hanson [Tue, 24 Apr 2018 06:19:40 +0000 (23:19 -0700)]
Rename set-equality-predicate-hasher! -> set-equality-predicate-properties!.

Now has two required arguments: hash-function and rehash-after-gc?.
A rest argument is a keyword list for additional properties.

6 years agoChange keyword-option-parser to expect defaults as a thunk.
Chris Hanson [Tue, 24 Apr 2018 06:16:18 +0000 (23:16 -0700)]
Change keyword-option-parser to expect defaults as a thunk.

6 years agoMove int:modulo to primitive-arithmetic and export it.
Chris Hanson [Tue, 24 Apr 2018 06:15:45 +0000 (23:15 -0700)]
Move int:modulo to primitive-arithmetic and export it.

6 years agoStandardize hash tables on SRFI-69 names and deprecate others.
Chris Hanson [Mon, 23 Apr 2018 06:34:31 +0000 (23:34 -0700)]
Standardize hash tables on SRFI-69 names and deprecate others.

Change make-hash-table to be smarter about choosing the appropriate hash
function for a given equality predicate.

Also work around name collisions in rtlopt/rcse*.scm, and tweak the hash-table
implementation to favor SRFI-69.

Some work remains: the code around building hash-table types needs to be
re-thought: it's a little clunky and could usefully take advantage of keyword
arguments.  (These keyword arguments should also be supported by
make-hash-table.)  The hash function should be optional and use the
equality-predicate default.  The older %make-hash-table should be renamed and
exported as it's the right interface when using types.

6 years agoMake sure that run-three-stages looks at "build" before "svm".
Chris Hanson [Sun, 22 Apr 2018 06:28:35 +0000 (23:28 -0700)]
Make sure that run-three-stages looks at "build" before "svm".

6 years agoEliminate remaining uses of find-matching-item.
Chris Hanson [Sun, 22 Apr 2018 05:08:44 +0000 (22:08 -0700)]
Eliminate remaining uses of find-matching-item.

6 years agoEliminate remaining uses of list-search-positive.
Chris Hanson [Sun, 22 Apr 2018 05:05:07 +0000 (22:05 -0700)]
Eliminate remaining uses of list-search-positive.

6 years agoDowncase remaining symbols in the runtime system.
Chris Hanson [Sun, 22 Apr 2018 04:58:12 +0000 (21:58 -0700)]
Downcase remaining symbols in the runtime system.

Only remaining such symbols are those that have explicit case.

6 years agoChange SVM compiler to use new pop-return instruction.
Chris Hanson [Sun, 22 Apr 2018 01:56:02 +0000 (18:56 -0700)]
Change SVM compiler to use new pop-return instruction.

6 years agoImplement new SVM instruction: (pop-return).
Chris Hanson [Sat, 21 Apr 2018 06:45:42 +0000 (23:45 -0700)]
Implement new SVM instruction: (pop-return).

6 years agoOverride definition of filter so that compilation using 9.2 works.
Chris Hanson [Thu, 19 Apr 2018 04:21:04 +0000 (21:21 -0700)]
Override definition of filter so that compilation using 9.2 works.

6 years agoImplement scode-procedure-arity so that it can be run during cold load.
Chris Hanson [Mon, 16 Apr 2018 02:16:56 +0000 (19:16 -0700)]
Implement scode-procedure-arity so that it can be run during cold load.

The lack of this prevented the cold load from running correctly when using
interpreted code, since it depended on a complex scode lambda implementation
that was loaded much later.

6 years agoChange guarantee to show context of error.
Chris Hanson [Mon, 16 Apr 2018 02:16:38 +0000 (19:16 -0700)]
Change guarantee to show context of error.

6 years agoEliminate references to now-deprecated definitions.
Chris Hanson [Sun, 15 Apr 2018 08:29:19 +0000 (01:29 -0700)]
Eliminate references to now-deprecated definitions.

6 years agoPut back inadvertently-deleted bindings.
Chris Hanson [Sun, 15 Apr 2018 08:29:02 +0000 (01:29 -0700)]
Put back inadvertently-deleted bindings.

6 years agoMark deprecated list procedures and also more SRFI-1 procedures.
Chris Hanson [Sun, 15 Apr 2018 08:19:00 +0000 (01:19 -0700)]
Mark deprecated list procedures and also more SRFI-1 procedures.

6 years agoChange find-{,not-}matching-items procedures to call find instead.
Chris Hanson [Sun, 15 Apr 2018 08:16:23 +0000 (01:16 -0700)]
Change find-{,not-}matching-items procedures to call find instead.

Also eliminate find-unique-{,not-}matching-items procedures which aren't used
and aren't documented.  These are trivially solved with find-tail and any.

6 years agoTweak indentation.
Chris Hanson [Sun, 15 Apr 2018 08:15:53 +0000 (01:15 -0700)]
Tweak indentation.

6 years agoEliminate references to various list filters in favor of SRFI-1.
Chris Hanson [Sun, 15 Apr 2018 07:49:20 +0000 (00:49 -0700)]
Eliminate references to various list filters in favor of SRFI-1.

One unfortunate development is that somewhere in the compiler is some code that
depends on the result of a filtering option being newly allocated, while FILTER
shares the tail of the input list when it can.  I modified FILTER to stop doing
that, because it wasn't obvious which of the modified calls in the compiler was
causing the problem.

6 years agoOptimize code generated for let*, let*-syntax, and letrec.
Chris Hanson [Sun, 15 Apr 2018 00:59:41 +0000 (17:59 -0700)]
Optimize code generated for let*, let*-syntax, and letrec.

Thanks to Patric Jonsson for noticing this.

6 years agoAnother round of downcasing.
Chris Hanson [Sat, 14 Apr 2018 06:38:52 +0000 (23:38 -0700)]
Another round of downcasing.

6 years agoDowncase a lot more symbols and constants.
Chris Hanson [Wed, 4 Apr 2018 06:23:23 +0000 (23:23 -0700)]
Downcase a lot more symbols and constants.

6 years agoAdd program to find symbols that depend on case folding.
Chris Hanson [Tue, 3 Apr 2018 07:25:46 +0000 (00:25 -0700)]
Add program to find symbols that depend on case folding.

6 years agoDowncase a lot more symbols and constants.
Chris Hanson [Mon, 2 Apr 2018 06:56:25 +0000 (23:56 -0700)]
Downcase a lot more symbols and constants.

6 years agoExport char-changes-when-X predicates and char sets.
Chris Hanson [Mon, 2 Apr 2018 04:07:46 +0000 (21:07 -0700)]
Export char-changes-when-X predicates and char sets.

6 years agoDowncase more symbols and constants.
Chris Hanson [Mon, 2 Apr 2018 00:38:03 +0000 (17:38 -0700)]
Downcase more symbols and constants.

6 years agoDowncase more symbols and constants.
Chris Hanson [Mon, 2 Apr 2018 00:02:49 +0000 (17:02 -0700)]
Downcase more symbols and constants.

6 years agoDowncase more symbols and constants.
Chris Hanson [Sun, 1 Apr 2018 23:58:08 +0000 (16:58 -0700)]
Downcase more symbols and constants.

6 years agoDowncase more symbols and constants.
Chris Hanson [Sun, 1 Apr 2018 23:52:10 +0000 (16:52 -0700)]
Downcase more symbols and constants.

6 years agoDowncase all symbols and constants.
Chris Hanson [Sun, 1 Apr 2018 23:42:19 +0000 (16:42 -0700)]
Downcase all symbols and constants.

6 years agoChange *parser-canonicalize-symbols?* to affect symbols only.
Chris Hanson [Sun, 1 Apr 2018 23:31:35 +0000 (16:31 -0700)]
Change *parser-canonicalize-symbols?* to affect symbols only.

6 years agoDowncase symbols and constants in optiondb.
Chris Hanson [Sun, 1 Apr 2018 23:27:00 +0000 (16:27 -0700)]
Downcase symbols and constants in optiondb.

6 years agoDowncase symbols and constants in optiondb.
Chris Hanson [Sun, 1 Apr 2018 23:26:11 +0000 (16:26 -0700)]
Downcase symbols and constants in optiondb.

6 years agoFix bug: mime decoder wasn't properly flushing its output.
Chris Hanson [Sun, 1 Apr 2018 07:43:10 +0000 (00:43 -0700)]
Fix bug: mime decoder wasn't properly flushing its output.

6 years agoFix typo in previous change.
Chris Hanson [Sat, 31 Mar 2018 07:02:50 +0000 (00:02 -0700)]
Fix typo in previous change.

6 years agoEliminate define-expr-item-compiler in favor of define-item-compiler.
Chris Hanson [Fri, 30 Mar 2018 05:59:08 +0000 (22:59 -0700)]
Eliminate define-expr-item-compiler in favor of define-item-compiler.

Not sure what I was thinking when I wrote that code; it was simply wrong.

6 years agoMove definition of access entirely into mit-syntax.
Chris Hanson [Fri, 30 Mar 2018 05:58:50 +0000 (22:58 -0700)]
Move definition of access entirely into mit-syntax.

6 years agoEliminate redundant code in cons-stream*.
Chris Hanson [Fri, 30 Mar 2018 05:57:27 +0000 (22:57 -0700)]
Eliminate redundant code in cons-stream*.

6 years agoReorder definitions in mit-macros into topical groups.
Chris Hanson [Fri, 30 Mar 2018 05:24:02 +0000 (22:24 -0700)]
Reorder definitions in mit-macros into topical groups.

6 years agoChange spar-transformer->runtime to provide default environment.
Chris Hanson [Fri, 30 Mar 2018 05:08:39 +0000 (22:08 -0700)]
Change spar-transformer->runtime to provide default environment.

6 years agoRename :FOO syntax names so that they aren't potential keywords.
Chris Hanson [Fri, 30 Mar 2018 05:03:25 +0000 (22:03 -0700)]
Rename :FOO syntax names so that they aren't potential keywords.

6 years agoTweak quasiquote implementation to use shorter names.
Chris Hanson [Fri, 30 Mar 2018 04:37:35 +0000 (21:37 -0700)]
Tweak quasiquote implementation to use shorter names.

Also refactor descend-pair slightly for brevity.

6 years agoChange and to be defined by syntax-rules.
Chris Hanson [Fri, 30 Mar 2018 03:55:11 +0000 (20:55 -0700)]
Change and to be defined by syntax-rules.

Also belatedly define the feature full-unicode.

6 years agoRewrite local-declare using syntax-rules.
Chris Hanson [Thu, 29 Mar 2018 07:00:51 +0000 (00:00 -0700)]
Rewrite local-declare using syntax-rules.

6 years agoConvert define-integrable, fluid-let, and paramaterize to scons-rule.
Chris Hanson [Thu, 29 Mar 2018 06:09:43 +0000 (23:09 -0700)]
Convert define-integrable, fluid-let, and paramaterize to scons-rule.

6 years agoChange unsyntaxer:* variables to be parameters and export them.
Chris Hanson [Thu, 29 Mar 2018 06:09:08 +0000 (23:09 -0700)]
Change unsyntaxer:* variables to be parameters and export them.

6 years agoFix broken unsyntaxing of scode sequences.
Chris Hanson [Thu, 29 Mar 2018 05:31:30 +0000 (22:31 -0700)]
Fix broken unsyntaxing of scode sequences.

Also fix over-long lines.

6 years agoMake second arg to scons-set! optional.
Chris Hanson [Thu, 29 Mar 2018 04:42:19 +0000 (21:42 -0700)]
Make second arg to scons-set! optional.

6 years agoRefactor how keywords are matched.
Chris Hanson [Thu, 29 Mar 2018 04:20:34 +0000 (21:20 -0700)]
Refactor how keywords are matched.

* spar-arg:compare renamed to spar-arg:id=? and second argument is optional,
  defaulting to spar-arg:form.

* patterns (noise ...), (noise-keyword ...), and (keyword ...) are eliminated.

* New pattern (ignore-if predicate arg...) ignores a subform if calling the
  predicate is satisfied.

* Renamed (value-if ...) to (keep-if ...) with same semantics: keeps a subform
  if calling the predicate is satisfied.

* New pattern (value arg) is like (values arg...) but a little clearer.

6 years agoChange spar pattern (elt ...) to (subform ...).
Chris Hanson [Thu, 29 Mar 2018 04:06:23 +0000 (21:06 -0700)]
Change spar pattern (elt ...) to (subform ...).

6 years agoRename spar*elt* to spar*subform*.
Chris Hanson [Thu, 29 Mar 2018 03:48:26 +0000 (20:48 -0700)]
Rename spar*elt* to spar*subform*.

6 years agoChange pattern->spar to make * and + operators implicitly listify.
Chris Hanson [Wed, 28 Mar 2018 06:30:54 +0000 (23:30 -0700)]
Change pattern->spar to make * and + operators implicitly listify.

6 years agoEliminate special bindings for constants in pattern->spar.
Chris Hanson [Wed, 28 Mar 2018 05:00:16 +0000 (22:00 -0700)]
Eliminate special bindings for constants in pattern->spar.

Also change leading : to $ to avoid making names look like keywords.

6 years agoRewrite patterns as (elt (list ...)) rather than (list (elt ...)).
Chris Hanson [Wed, 28 Mar 2018 04:41:07 +0000 (21:41 -0700)]
Rewrite patterns as (elt (list ...)) rather than (list (elt ...)).

6 years agoConvert and-let* to scons-rule.
Chris Hanson [Wed, 28 Mar 2018 04:34:09 +0000 (21:34 -0700)]
Convert and-let* to scons-rule.

6 years agoAdd some simple optimizations.
Chris Hanson [Wed, 28 Mar 2018 04:33:56 +0000 (21:33 -0700)]
Add some simple optimizations.

6 years agoConvert a bunch more macros to scons-rule.
Chris Hanson [Wed, 28 Mar 2018 00:17:55 +0000 (17:17 -0700)]
Convert a bunch more macros to scons-rule.

6 years agoUse folding to eliminate loops in macros.
Chris Hanson [Wed, 28 Mar 2018 00:17:36 +0000 (17:17 -0700)]
Use folding to eliminate loops in macros.

6 years agoRewrite COND and DO to use spar rules.
Chris Hanson [Tue, 27 Mar 2018 07:29:18 +0000 (00:29 -0700)]
Rewrite COND and DO to use spar rules.

6 years agoChange scons-call to not quote its operator.
Chris Hanson [Tue, 27 Mar 2018 06:54:01 +0000 (23:54 -0700)]
Change scons-call to not quote its operator.

Instead one must explicitly call scons-close when necessary.

6 years agoAdd context to items, for errors that happen during item compilation.
Chris Hanson [Tue, 27 Mar 2018 06:53:18 +0000 (23:53 -0700)]
Add context to items, for errors that happen during item compilation.

6 years agoFormalize the context of a syntax error.
Chris Hanson [Tue, 27 Mar 2018 05:07:07 +0000 (22:07 -0700)]
Formalize the context of a syntax error.

6 years agoImplement spar-not.
Chris Hanson [Mon, 26 Mar 2018 08:32:47 +0000 (01:32 -0700)]
Implement spar-not.

6 years agoRewrite COND-EXPAND to use spar rule.
Chris Hanson [Mon, 26 Mar 2018 02:13:33 +0000 (19:13 -0700)]
Rewrite COND-EXPAND to use spar rule.

6 years agoChange spars to set up error context when calling out to procedures.
Chris Hanson [Mon, 26 Mar 2018 00:05:17 +0000 (17:05 -0700)]
Change spars to set up error context when calling out to procedures.

6 years agoTweak CASE to use new keyword pattern.
Chris Hanson [Sun, 25 Mar 2018 15:49:44 +0000 (08:49 -0700)]
Tweak CASE to use new keyword pattern.

6 years agoRename spar-seq to spar-and.
Chris Hanson [Sun, 25 Mar 2018 15:46:54 +0000 (08:46 -0700)]
Rename spar-seq to spar-and.

6 years agoTweak spar patterns.
Chris Hanson [Sun, 25 Mar 2018 15:36:58 +0000 (08:36 -0700)]
Tweak spar patterns.

* Rename (quote <x>) to (noise <x>).
* Rename (keyword <id>) to (noise-keyword <id>).
* Implement (keyword <id>) that matches <id> and then pushes it.

6 years agoClarify that spar-push-if pushes the form, and spar-push-elt the elt.
Chris Hanson [Sun, 25 Mar 2018 15:31:23 +0000 (08:31 -0700)]
Clarify that spar-push-if pushes the form, and spar-push-elt the elt.

6 years agoRewrite CASE as a spar-transformer.
Chris Hanson [Sat, 24 Mar 2018 06:52:39 +0000 (23:52 -0700)]
Rewrite CASE as a spar-transformer.

6 years agoImplement spar-if and associated pattern.
Chris Hanson [Sat, 24 Mar 2018 06:04:15 +0000 (23:04 -0700)]
Implement spar-if and associated pattern.

6 years agoSimplify spars pattern language.
Chris Hanson [Sat, 24 Mar 2018 05:00:08 +0000 (22:00 -0700)]
Simplify spars pattern language.

Also change some of the terms to be clearer: I'm anticipating how the
documentation will read.

6 years agoEliminate parse-define-form.
Chris Hanson [Fri, 23 Mar 2018 06:51:23 +0000 (23:51 -0700)]
Eliminate parse-define-form.

6 years agoRewrite core of pattern compiler to use rules.
Chris Hanson [Fri, 23 Mar 2018 06:33:38 +0000 (23:33 -0700)]
Rewrite core of pattern compiler to use rules.

6 years agoImplement spar-arg:compare and (keyword id) pattern.
Chris Hanson [Fri, 23 Mar 2018 06:32:26 +0000 (23:32 -0700)]
Implement spar-arg:compare and (keyword id) pattern.

6 years agoMore macros converted to new model, plus a lot of fixes and tweaks.
Chris Hanson [Thu, 22 Mar 2018 07:10:25 +0000 (00:10 -0700)]
More macros converted to new model, plus a lot of fixes and tweaks.

6 years agoImplement syntax-constructor ("scons") mechanism.
Chris Hanson [Thu, 22 Mar 2018 04:16:07 +0000 (21:16 -0700)]
Implement syntax-constructor ("scons") mechanism.

This eliminates a potential problem with RSC and ER macros, which typically
construct ordinary list structure using quasiquote and renaming the keywords.
Unfortunately this will fail if the use environment has redefined the quasiquote
and/or quote keywords.  These constructors are careful not to use any keywords
except renamed ones; they also hide most of the renaming while providing a
simple procedural interface.

6 years agoHandle case where debugging-info has an old-style pathname.
Chris Hanson [Thu, 22 Mar 2018 03:52:29 +0000 (20:52 -0700)]
Handle case where debugging-info has an old-style pathname.

6 years agoDon't write pathnames into debugging info.
Chris Hanson [Thu, 22 Mar 2018 03:31:38 +0000 (20:31 -0700)]
Don't write pathnames into debugging info.

6 years agoImplement spar-top-level to cut down on boilerplate.
Chris Hanson [Thu, 22 Mar 2018 00:14:53 +0000 (17:14 -0700)]
Implement spar-top-level to cut down on boilerplate.

6 years agoTweak.
Chris Hanson [Wed, 21 Mar 2018 23:52:30 +0000 (16:52 -0700)]
Tweak.

6 years agoChange record predicate to check for child types. Reported by Arthur.
Chris Hanson [Wed, 21 Mar 2018 22:45:04 +0000 (15:45 -0700)]
Change record predicate to check for child types.  Reported by Arthur.

6 years agoMake record inheritance comply with SRFI 131.
Chris Hanson [Wed, 21 Mar 2018 08:50:54 +0000 (01:50 -0700)]
Make record inheritance comply with SRFI 131.

6 years agoImplement pattern language to make spars more terse.
Chris Hanson [Wed, 21 Mar 2018 07:40:16 +0000 (00:40 -0700)]
Implement pattern language to make spars more terse.

6 years agoAdd forgotten export.
Chris Hanson [Wed, 21 Mar 2018 05:53:32 +0000 (22:53 -0700)]
Add forgotten export.

6 years agoChange spar-match-null to a procedure.
Chris Hanson [Tue, 20 Mar 2018 05:34:31 +0000 (22:34 -0700)]
Change spar-match-null to a procedure.

6 years agoSimplify spar interface a bit more.
Chris Hanson [Mon, 19 Mar 2018 03:38:53 +0000 (20:38 -0700)]
Simplify spar interface a bit more.

6 years agoImplement record inheritance at Arthur's request.
Chris Hanson [Mon, 19 Mar 2018 03:10:00 +0000 (20:10 -0700)]
Implement record inheritance at Arthur's request.

6 years agoEliminate default-inits arg from make-record-type.
Chris Hanson [Sun, 18 Mar 2018 22:01:23 +0000 (15:01 -0700)]
Eliminate default-inits arg from make-record-type.

This will allow all optional args to be removed after 9.3.

6 years agoStreamline definition of record-type proxies.
Chris Hanson [Sat, 17 Mar 2018 23:42:40 +0000 (16:42 -0700)]
Streamline definition of record-type proxies.