Use implicit tag for scheme-number or integer
This commit is contained in:
parent
5f4499fdb1
commit
4968558e49
15
2_78.rkt
15
2_78.rkt
|
@ -139,13 +139,20 @@
|
|||
(newline)
|
||||
result))))
|
||||
|
||||
;; scheme-number is for reals only
|
||||
(define (scheme-number? x)
|
||||
(and (real? x)
|
||||
(not (integer? x))))
|
||||
|
||||
(define (attach-tag type-tag contents)
|
||||
(cond ((number? contents) contents)
|
||||
(cond ((or (scheme-number? contents)
|
||||
(integer? contents))
|
||||
contents)
|
||||
(else (cons type-tag contents))))
|
||||
|
||||
(define (type-tag datum)
|
||||
(cond ((number? datum) 'scheme-number)
|
||||
(cond ((scheme-number? datum) 'scheme-number)
|
||||
((integer? datum) 'integer)
|
||||
((pair? datum) (car datum))
|
||||
(else (error "Bad tagged datum -- TYPE-TAG" datum))))
|
||||
|
||||
|
@ -154,7 +161,9 @@
|
|||
((pair? datum) (cdr datum))
|
||||
(else (error "Bad tagged datum -- CONTENTS" datum))))
|
||||
|
||||
(define type-tagged? pair?)
|
||||
(define type-tagged?
|
||||
(lambda (x)
|
||||
(or (number? x) (pair? x))))
|
||||
|
||||
;; Scheme numbers
|
||||
|
||||
|
|
Loading…
Reference in New Issue