15 lines
1 KiB
Markdown
15 lines
1 KiB
Markdown
# C# Language Design Notes for Jan 10, 2018
|
|
|
|
## Agenda
|
|
|
|
1. Ranges and endpoint types
|
|
|
|
|
|
# Ranges and endpoint types
|
|
Wouldn't it be nice to have a range type that work on any comparable? Possibly, but we're not eager to solve this right now.
|
|
|
|
We need to believe that our future selves can extend the language with some form of target typing, for instance. There's a burden on them (us) to be able to do that without a compat break (silent semantic change), e.g.: There's a type in the future that has conversions so that it would work one way in 7.3 and a different way in the future.
|
|
|
|
We probably want `..(int, int)` and `..(long, long)`. We want to treat those as usual operators, so they have to allow user defined conversions of the end points. We could consider blocking off normal conversions of the operands, but that's extremely distasteful.
|
|
|
|
So first tentative decision: There's `Range` (for ints) and `LongRange`. The `..` operators are built-in. There's an implicit conversion one way, and an explicit the other, also both built-in.
|