make (integer-in n n) produce just n

This commit is contained in:
Robby Findler 2015-01-21 17:15:25 -06:00
parent cb68141ff6
commit 9f59d57ee4

View File

@ -518,8 +518,9 @@
(struct integer-in-ctc (start end) (struct integer-in-ctc (start end)
#:property prop:flat-contract #:property prop:flat-contract
(build-flat-contract-property (build-flat-contract-property
#:name (λ (ctc) `(integer-in ,(integer-in-ctc-start ctc) #:name (λ (ctc)
,(integer-in-ctc-end ctc))) `(integer-in ,(integer-in-ctc-start ctc)
,(integer-in-ctc-end ctc)))
#:first-order (λ (ctc) #:first-order (λ (ctc)
(define start (integer-in-ctc-start ctc)) (define start (integer-in-ctc-start ctc))
(define end (integer-in-ctc-end ctc)) (define end (integer-in-ctc-end ctc))
@ -543,7 +544,14 @@
(define/final-prop (integer-in start end) (define/final-prop (integer-in start end)
(check-two-args 'integer-in start end exact-integer? exact-integer?) (check-two-args 'integer-in start end exact-integer? exact-integer?)
(integer-in-ctc start end)) (if (= start end)
;; won't fail, but gets us a contract struct
;; something seems safer to always produce
;; from a contract operation
(coerce-contract 'integer-in start)
(integer-in-ctc start end)))
(define/final-prop (real-in start end) (define/final-prop (real-in start end)
(check-two-args 'real-in start end real? real?) (check-two-args 'real-in start end real? real?)