diff options
| author | 2025-11-01 22:29:42 -0400 | |
|---|---|---|
| committer | 2025-11-01 22:29:42 -0400 | |
| commit | 44e4fd1e1f914e5b307435769c8909da8a72aafb (patch) | |
| tree | 0c5e707c836f646229462adb08314ac8988e2d14 /lib/cuprate/rewriters | |
| parent | add expect-to-fail (diff) | |
Big rewrite:
1. Rename to "cuprate".
2. Remove mutexes.
3. Move rewriters to other library.
4. Move the DTO out of the `test-info` parameter. They are now separate
parameters, with the expectation that the DTO will not change over
time. This significantly reduces the complexity of the code.
5. Use SRFI-146 for Chicken.
Diffstat (limited to '')
| -rw-r--r-- | lib/cuprate/rewriters.chicken.sld | 35 | ||||
| -rw-r--r-- | lib/cuprate/rewriters.foment.sld | 32 | ||||
| -rw-r--r-- | lib/cuprate/rewriters.r7rs.sld | 24 |
3 files changed, 91 insertions, 0 deletions
diff --git a/lib/cuprate/rewriters.chicken.sld b/lib/cuprate/rewriters.chicken.sld new file mode 100644 index 0000000..82a275c --- /dev/null +++ b/lib/cuprate/rewriters.chicken.sld @@ -0,0 +1,35 @@ +(define-library (cuprate rewriters) + (import (scheme base) (scheme write) + (chicken memory representation) + (chicken condition)) + (export rewriters rewrite) + (begin + (define (default-on-pair pair) + (cons (rewrite (car pair)) + (rewrite (cdr pair)))) + (define (default-on-vector vec) + (vector-map rewrite vec)) + (define (default-on-error error) + (cons 'error + (cons (error-object-message error) + (error-object-irritants error)))) + (define (default-on-condition cond) + (map rewrite (condition->list cond))) + (define (default-on-record rec) + `(record (name ,(rewrite (record-instance-type rec))) + (elements + ,(vector-map rewrite (record->vector rec))))) + (define rewriters + (make-parameter + `((,pair? . ,default-on-pair) + (,vector? . ,default-on-vector) + (,error-object? . ,default-on-error) + (,condition? . ,default-on-condition) + (,record-instance? . ,default-on-record)))) + (define (rewrite obj) + (let loop ((rewriters (rewriters))) + (cond + ((null? rewriters) obj) + (((caar rewriters) obj) ((cdar rewriters) obj)) + (else (loop (cdr rewriters)))))))) + diff --git a/lib/cuprate/rewriters.foment.sld b/lib/cuprate/rewriters.foment.sld new file mode 100644 index 0000000..24c26d8 --- /dev/null +++ b/lib/cuprate/rewriters.foment.sld @@ -0,0 +1,32 @@ +(define-library (cuprate rewriters) + (import (scheme base) + (only (foment base) + error-object-type + error-object-who + error-object-kind)) + (export rewriters rewrite) + (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 rewriters + (make-parameter `((,pair? . ,default-on-pair) + (,vector? . ,default-on-vector) + (,error-object? . ,default-on-error)))) + (define (rewrite obj) + (let loop ((rewriters (rewriters))) + (cond + ((null? rewriters) obj) + (((caar rewriters) obj) ((cdar rewriters) obj)) + (else (loop (cdr rewriters)))))))) + diff --git a/lib/cuprate/rewriters.r7rs.sld b/lib/cuprate/rewriters.r7rs.sld new file mode 100644 index 0000000..3996db6 --- /dev/null +++ b/lib/cuprate/rewriters.r7rs.sld @@ -0,0 +1,24 @@ +(define-library (cuprate rewriters) + (import (scheme base)) + (export rewriiters rewrite) + (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))) + (cons 'error (cons msg irritants)))) + (define rewriters + (make-parameter `((,pair? . ,default-on-pair) + (,vector? . ,default-on-vector) + (,error-object? . ,default-on-error)))) + (define (rewrite obj) + (let loop ((rewriters (rewriters))) + (cond + ((null? rewriters) obj) + (((caar rewriters) obj) ((cdar rewriters) obj)) + (else (loop (cdr rewriters)))))))) + |
