Use implicit tag for scheme-number or integer

This commit is contained in:
Oliver Payne 2022-03-11 20:04:29 +00:00
parent 5f4499fdb1
commit 4968558e49
1 changed files with 12 additions and 3 deletions

View File

@ -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