Skip to content

Commit bfba1c0

Browse files
committed
c2_78
1 parent e9349ab commit bfba1c0

File tree

2 files changed

+18
-7
lines changed

2 files changed

+18
-7
lines changed

src/c2_78.scm

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
(import (rnrs)
2+
(base)
3+
(init)
4+
(generic-arithmetic))
5+
6+
(init)
7+
(display (make-scheme-number 3))(newline)
8+
(display (add (make-scheme-number 3)
9+
(make-scheme-number 4)))(newline)

src/lib/base.scm

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,17 @@
1010
(define get (operation-table 'lookup-proc))
1111
(define put (operation-table 'insert-proc!))
1212
(define (attach-tag type-tag contents)
13-
(cons type-tag contents))
13+
(if (number? contents)
14+
contents
15+
(cons type-tag contents)))
1416
(define (type-tag datum)
15-
(if (pair? datum)
16-
(car datum)
17-
(error 'type-tag "Bad tagged datum" datum)))
17+
(cond ((number? datum) 'scheme-number)
18+
((pair? datum) (car datum))
19+
(else (error 'type-tag "Bad tagged datum" datum))))
1820
(define (contents datum)
19-
(if (pair? datum)
20-
(cdr datum)
21-
(error 'contents "Bad tagged datum" datum)))
21+
(cond ((number? datum) datum)
22+
((pair? datum) (cdr datum))
23+
(else (error 'contents "Bad tagged datum" datum))))
2224
(define (square x)
2325
(* x x))
2426
(define (apply-generic op . args)

0 commit comments

Comments
 (0)