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.foment.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 'lib/rewriters.foment.scm')
| -rw-r--r-- | lib/rewriters.foment.scm | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/lib/rewriters.foment.scm b/lib/rewriters.foment.scm new file mode 100644 index 0000000..4d26429 --- /dev/null +++ b/lib/rewriters.foment.scm @@ -0,0 +1,45 @@ +#| Copyright © 2025 Peter McGoron + | + | Permission is hereby granted, free of charge, to any person obtaining + | a copy of this software and associated documentation files (the + | “Software”), to deal in the Software without restriction, including + | without limitation the rights to use, copy, modify, merge, publish, + | distribute, sublicense, and/or sell copies of the Software, and to + | permit persons to whom the Software is furnished to do so, subject to + | the following conditions: + | + | The above copyright notice and this permission notice shall be included + | in all copies or substantial portions of the Software. + | + | THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, + | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + | NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + | DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + | OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR + | THE USE OR OTHER DEALINGS IN THE SOFTWARE. + |# + +(import (only (foment base) + error-object-type + error-object-who + error-object-kind)) + +(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))) + `(error (type ,(test-rewrite (error-object-type error))) + (who ,(test-rewrite (error-object-who error))) + (kind ,(test-rewrite (error-object-kind error))) + (msg ,(test-rewrite (error-object-message error))) + (irritants ,@(map test-rewrite (error-object-irritants error)))))) + (define default-rewriters + `((,pair? . ,default-on-pair) + (,vector? . ,default-on-vector) + (,error-object? . ,default-on-error))))
\ No newline at end of file |
