* module/system/repl/common.scm (repl-prompt): Return a string instead of
outputting to the port, for better readline integration.
* module/system/repl/repl.scm (meta-reader, prompting-meta-read)
(start-repl): Integrate with (ice-9 readline) via the current-reader
fluid and the repl-reader function, both from boot-9.scm.
* module/system/repl/command.scm (system): Declare exports in the module
declaration.
* module/system/repl/repl.scm (start-repl): If the evaluation returns
multiple values, print them separately.
* module/system/base/syntax.scm (define-record): Rebase to implement on
top of Guile's records, which are the substrate of srfi-9's records.
(%compute-initargs): Rename from %make-struct, just return the list of
values.
(get-slot, set-slot!, slot): Removed, no longer used.
(record-case): Allow slots of the form (MYNAME SLOTNAME), which binds
SLOTNAME to MYNAME (instead of SLOTNAME to SLOTNAME).
(record-case, record?): No more ice-9 match!
* module/system/il/compile.scm (codegen): Tweaks so that the new record
code works.
* module/system/il/ghil.scm: Fix some slot references.
* module/system/vm/assemble.scm (preprocess, codegen): Remove calls to
`slot'.
(codegen): Fix some slot references.
* module/system/base/syntax.scm (define-record): Define the accessors as
procedures-with-setters, not just as getters.
* module/system/il/compile.scm (optimize): This function was bitrotten
since the addition of source locations in
cb4cca12e7. Untested attempts to
de-bitrot it. Dedottify as well.
* module/system/il/ghil.scm:
* module/system/il/glil.scm (unparse):
* module/system/vm/debug.scm (debugger-repl): Ongoing dedottification.
* module/system/base/syntax.scm (define-record): Define named accessors,
to prepare the code for srfi-9 records switchover.
* module/system/il/ghil.scm:
* module/system/il/glil.scm: Export a bunch of named accessors.
* module/language/scheme/translate.scm: Refactor use of `match' to use
`pmatch'. Relatively straightforward.
* module/system/base/pmatch.scm (ppat): Fix some copy-n-paste bugs: the _
rule, the quote rule.
* module/system/base/Makefile.am: Add pmatch.scm.
* module/system/base/pmatch.scm: New file, taken from Dan Friedman's
alpha-kanren paper. Implements a less magical match syntax, pmatch.
* module/system/vm/assemble.scm: No more need for (ice-9 match).
* module/system/vm/conv.scm (code-pack, code->object): Change to use
pmatch.
* module/system/base/syntax.scm (record-case): Capture the match macro.
* module/system/il/glil.scm:
* module/system/il/compile.scm: Convert to record-case.
* module/system/base/syntax.scm (define-record): Rework to separate the
type and its constructor. Now (define-record (<foo> bar)) will create
`make-foo' as the constructor, not `<foo>'. Also the constructor now
takes either keyword or positional arguments, so that it can be used as
the implementation of variant types as well.
(|): Map directly to define-record instead of rolling our own thing.
* module/language/scheme/translate.scm:
* module/system/base/language.scm:
* module/system/il/compile.scm:
* module/system/il/ghil.scm:
* module/system/il/glil.scm:
* module/system/repl/common.scm:
* module/system/vm/assemble.scm:
* module/system/vm/debug.scm: Change instances of record creation to use
the make-foo procedures instead of <foo>. Adjust module exports as
necessary.
* module/system/base/syntax.scm (record?): Temporarily export this thing,
so that code will remain correct when I change to srfi-9 records.
* module/system/vm/assemble.scm: Convert to use record-case.
* module/system/base/syntax.scm (system): Don't re-export receive or
and-let*; modules should explicitly import these if they want to. Don't
export an empty stack-catch definition!
* module/system/repl/command.scm (system): Pull in and-let*.
* module/system/vm/disasm.scm (system): Don't import and-let*.
* benchmark/lib.scm (fibo): Make fibo actually a fibonacci sequence.
* module/system/base/syntax.scm (system): Forward-declare all exports.
(expand-symbol, slot): Rewrite expand-symbol to expand to a
non-recursive invocation of `slot', so that in the future when we get
rid of this syntax, the replacement will be more palatable to the eyes.
* module/language/scheme/translate.scm (¤t-macros): Removed.
(¤t-macro-module): Removed.
(&compile-time-module): New.
(eval-at-compile-time): New.
(translate): Initialize `&compile-time-module'.
(expand-macro)[use-syntax]: New case.
[begin let...]: Don't expand these built-in macros.
[else]: Rewrote the macro detection and invocation logic. Invoke macro
transformers in the current compile-time module.
(trans): Let `expand-macro' raise an exception if needed.
(trans-pair)[defmacro define-macro]: Evaluate the macro definition in
the compile-time module.
* testsuite/t-match.scm: Use `use-syntax' instead of `use-modules' for
`(ice-9 match)' and `(srfi srfi-9)'.
* testsuite/t-records.scm: Likewise.
git-archimport-id: lcourtes@laas.fr--2005-mobile/guile-vm--mobile--0.6--patch-15
* module/system/vm/assemble.scm (dump-object!): New sub-procedure
`too-long'. For `list' and `vector', encode the length on 2 octets
instead of 1 and report an error if a list/vector is longer than 65535.
* module/system/vm/disasm.scm (original-value): New sub-procedure
`list-or-vector?'; when true, return the number of elements for that
list/vector.
* src/vm_system.c (list): Fetch the length as a two-octet integer.
(vector): Likewise.
* testsuite/t-basic-contructs.scm: New.
* testsuite/Makefile.am (vm_test_files): Added the above file.
* module/system/vm/core.scm (load-compiled): Added a bit of
documentation.
git-archimport-id: lcourtes@laas.fr--2005-mobile/guile-vm--mobile--0.6--patch-11
* module/system/vm/conv.scm: Autoload `(system vm core)' also when
`opcode->instruction' is hit. This fixes an "unbound variable" problem.
git-archimport-id: lcourtes@laas.fr--2005-mobile/guile-vm--mobile--0.6--patch-8