diff options
| author | 2025-08-05 18:20:28 -0400 | |
|---|---|---|
| committer | 2025-08-05 18:20:28 -0400 | |
| commit | f36f61cb4ab68285b2ba4a230f312843e4faf885 (patch) | |
| tree | 32fd2958c18c54c875171bf177217b2d44dd06cf /lib/rewriters.r7rs.scm | |
| parent | add adjustable value rewriter (diff) | |
Support Foment
Foment had some peculiarities:
1. Parameterize objects are initialized with the objects themselves at
some point, which broke the previous code.
2. Foment cannot discard multiple value returns in some scenarios.
Diffstat (limited to '')
| -rw-r--r-- | lib/rewriters.r7rs.scm | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/lib/rewriters.r7rs.scm b/lib/rewriters.r7rs.scm index 8c3db78..3b6ba96 100644 --- a/lib/rewriters.r7rs.scm +++ b/lib/rewriters.r7rs.scm @@ -20,7 +20,18 @@ | THE USE OR OTHER DEALINGS IN THE SOFTWARE. |# -(begin (define default-rewriters - `((,pair? . ,default-on-pair) - (,vector? . ,default-on-vector) - (,error-object? ,default-on-error))))
\ No newline at end of file +(begin + (define (default-on-pair pair) + (cons (test-rewrite (car pair)) + (test-rewrite (cdr pair)))) + (define (default-on-vector vec) + (vector-map test-rewrite vec)) + (define (default-on-error error) + (let ((msg (error-object-message error)) + (irritants (error-object-irritants error))) + (display (list msg irritants)) (newline) + (cons 'error (cons msg irritants)))) + (define default-rewriters + `((,pair? . ,default-on-pair) + (,vector? . ,default-on-vector) + (,error-object? . ,default-on-error))))
\ No newline at end of file |
