-
-
Couldn't load subscription status.
- Fork 104
Open
Description
Description:
Typed Racket's refinement types (Refine) are currently limited to linear integer constraints (e.g., <=, and, or on integer linear combinations). This restriction prevents expressing essential real-number constraints, such as non-zero denominators or real-valued ranges, hindering type safety in numerical computations.
Example Failure:
(define-type NonzeroReal (Refine [r : Real] (not (= r 0)))) ; ❌ Type checker error
(: safe-div (-> Real NonzeroReal Real))
(define (safe-div x y)
(/ x y))Proposal:
Extend the Refine type to support real-number equality and inequality constraints (e.g., (not (= r 0)), (< a b), (<= c 1.0)). This enhancement would:
- Enable type-safe checks for non-zero reals and bounded ranges.
- Enhance expressiveness for real-valued domains while preserving type safety.
Requested Features:
- Support for real-number predicates in
Refine, including equality (=), inequality (<,>,<=,>=), and logical combinations (and,or,not).
Metadata
Metadata
Assignees
Labels
No labels