File: record-printer-test.scm

package info (click to toggle)
chicken 5.3.0-2
  • links: PTS
  • area: main
  • in suites: forky, sid, trixie
  • size: 32,892 kB
  • sloc: ansic: 580,083; lisp: 71,987; tcl: 1,445; sh: 588; makefile: 60
file content (29 lines) | stat: -rw-r--r-- 616 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
;;;; record-printer-test.scm

(import (chicken format)
	(chicken string))

(define-record kons x y)

;; no printer to start out

(assert (not (record-printer kons)))
(assert (equal? "#<kons>" (conc (make-kons 1 2))))

;; custom printer

(set-record-printer! kons
 (lambda (k p)
   (fprintf p "#<kons ~a ~a>" (kons-x k) (kons-y k))))

(assert (equal? "#<kons 1 2>" (conc (make-kons 1 2))))

;; srfi-17 style assignment

(assert (procedure? (setter record-printer)))

(set! (record-printer kons)
  (lambda (k p)
    (fprintf p "#[~a . ~a]" (kons-x k) (kons-y k))))

(assert (equal? "#[1 . 2]" (conc (make-kons 1 2))))