aboutsummaryrefslogtreecommitdiffstats
path: root/lib/cuprate/implementation/foment.sld
blob: 907decd5f0d771850766e91ca10b7edb6ae32d38 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
(define-library (cuprate implementation foment)
  (import (foment base) (scheme base) (srfi 166) (srfi 225) (srfi 128) (srfi 125))
  (export pretty-print default-test-dto
          alist->default-dictionary
          make-eq-map implementation-rewriters)
  (include "srfi-125-eq-map.scm")
  (begin
    (define (pretty-print obj)
      (show #t (pretty obj))
      (newline))
    (define default-test-dto eqv-alist-dto)
    (define (alist->default-dictionary x) x)
    (define (default-on-error rewrite error)
      (let ((msg (error-object-message error))
            (irritants (error-object-irritants error)))
        `(error (type ,(rewrite (error-object-type error)))
                (who ,(rewrite (error-object-who error)))
                (kind ,(rewrite (error-object-kind error)))
                (msg ,(rewrite (error-object-message error)))
                (irritants ,@(map rewrite (error-object-irritants error))))))
    (define implementation-rewriters
      (list (cons error-object? default-on-error)))))