[swift-evolution] Proposal: floating point static min / max	properties
    Brent Royal-Gordon 
    brent at architechies.com
       
    Sat Dec  5 15:33:17 CST 2015
    
    
  
> extension Int: RangeDiscoverable {
> 	static let representableRange: Range<Int> = Int.min…Int.max
> }
There’s a problem with that:
	 24> Int.min...Int.max
	fatal error: Range end index has no valid successor
The problem is that Int.min … Int.max is actually represented as Int.min ..< Int.max.successor(), which is obviously not going to work.
> This would require numeric types to conform to ForwardIndexType.  Integer types already conform to RandomAccessIndexType.  Floating point types do not currently conform to ForwardIndexType but could conform not just to ForwardIndexType, but also BidirectionalIndexType.
Floats don’t currently conform to the IndexType protocols because there’s no *natural* interval for them to use. nextUp/nextDown are rarely what you want in practice, while 1 breaks down at large sizes.
However, we can fix both of these issues by using ClosedInterval instead of Range. ClosedInterval requires only that the bounds be Comparable, and doesn’t try to add 1 to the end.
-- 
Brent Royal-Gordon
Architechies
    
    
More information about the swift-evolution
mailing list