;;;; type-checks-numbers.interval.scm -*- Scheme -*- (module (type-checks-numbers interval) (;export ; check-range ; check-closed-interval check-open-interval check-half-closed-interval check-half-open-interval) (import scheme) (import (chicken base)) (import (chicken type)) (import type-checks-basic) (import (type-errors-numbers interval)) (: check-range (* number number #!optional * -> number number)) (: check-closed-interval (* number number number #!optional * -> number)) (: check-open-interval (* number number number #!optional * -> number)) (: check-half-closed-interval (* number number number #!optional * -> number)) (: check-half-open-interval (* number number number #!optional * -> number)) (cond-expand (unsafe (define (check-range loc obj . _) obj) ) (define (check-closed-interval loc obj . _) obj) (define (check-open-interval loc obj . _) obj) (define (check-half-closed-interval loc obj . _) obj) (define (check-half-open-interval loc obj . _) obj) (else ;check half-closed-interval itself (define (check-range loc start end . args) (unless (<= start end) (error-range loc start end (optional args)) ) (values start end) ) (define (check-closed-interval loc num min max . args) (unless (and (<= min num) (<= num max)) (error-closed-interval loc num min max (optional args))) num ) (define (check-open-interval loc num min max . args) (unless (and (< min num) (< num max)) (error-open-interval loc num min max (optional args))) num ) (define (check-half-open-interval loc num min max . args) (unless (and (< min num) (<= num max)) (error-half-open-interval loc num min max (optional args))) num ) (define (check-half-closed-interval loc num min max . args) (unless (and (<= min num) (< num max)) (error-half-closed-interval loc num min max (optional args))) num) ) ) ) ;module (type-checks-numbers interval)