==================================================================== Universal Segment ==================================================================== The UniversalSegment domain generalizes Segment by allowing segments without a "hi" end point. :: pints := 1.. 1.. Type: UniversalSegment PositiveInteger nevens := (0..) by -2 0.. by - 2 Type: UniversalSegment NonNegativeInteger Values of type Segment are automatically converted to type UniversalSegment when appropriate. :: useg: UniversalSegment(Integer) := 3..10 3..10 Type: UniversalSegment Integer The operation hasHi is used to test whether a segment has a hi end point. :: hasHi pints false Type: Boolean hasHi nevens false Type: Boolean hasHi useg true Type: Boolean All operations available on type Segment apply to UniversalSegment, with the proviso that expansions produce streams rather than lists. This is to accommodate infinite expansions. :: expand pints [1,2,3,4,5,6,7,8,9,10,...] Type: Stream Integer expand nevens [0,- 2,- 4,- 6,- 8,- 10,- 12,- 14,- 16,- 18,...] Type: Stream Integer expand [1, 3, 10..15, 100..] [1,3,10,11,12,13,14,15,100,101,...] Type: Stream Integer See Also: * )help Segment * )help SegmentBinding * )help List * )help Stream * )show UniversalSegment