Информация об изменениях

Сообщение Re[2]: [ksi] Синтаксис диапазонов -- тип range от 01.02.2022 17:35

Изменено 01.02.2022 17:41 Sm0ke

Re[2]: [ksi] Синтаксис диапазонов -- тип range
Здравствуйте, wildwind, Вы писали:


W>А зачем тут шаг?


Чтобы сразу указать его и итерировать в цикле. Или можно взять слайс от массива, тоже с шагом.

Я думал над тем, чтобы шаг не хранить, если он не указан, но решил, что лучше всегда хранить, чтобы можно было потом в программе его проверять без лишних костылей типа проверки наличия поля.

S>>Если нижняя граница не указана, то она равна 0.


W>А почему именно 0, а не -∞, например?


Можно явно указать и минус бесконечность, но итерировать тогда нельзя будет. Какой тогда прок использовать минус бесконечность по умолчанию?
Ещё я думаю, что можно будет явно указать значение null (не задано).

S>>С удовольствием рассмотрю ваши варианты.


W>А если так: Range(8-, 2+)? "+" означает закрытый, "-" открытый.

W>Еcли хочется покороче, можно типа _R(8-, 2+)

_R — это врядли.

Тогда как-то так?
`range(4+, 8-)
`range(4+, 8+)
`range(4-, 8-)
`range(4-, 8+)

* Ключевые слова в ksi с бактика скорее всего будут.

Теперь сравним
   ваш вариант    rust+       питон

`range(4+, 8-)    4 .. 8      [4:8]
`range(4+, 8+)    4 ..= 8
`range(4-, 8-)    4 *.. 8
`range(4-, 8+)    4 *..= 8


И с шагом
   ваш вариант+      rust+           питон

`range(4+, 8-, 2)    4 .. 8 : 2      [4:8:2]
`range(4+, 8+, 2)    4 ..= 8 : 2
`range(4-, 8-, 2)    4 *.. 8 : 2
`range(4-, 8+, 2)    4 *..= 8 : 2


И наконец в слайсах
             ваш вариант     rust+                   питон

array[`range(4+, 8-, 2)]     array[4 .. 8 : 2]       array[4:8:2]
array[`range(4+, 8+, 2)]     array[4 ..= 8 : 2]
array[`range(4-, 8-, 2)]     array[4 *.. 8 : 2]
array[`range(4-, 8+, 2)]     array[4 *..= 8 : 2]


В общем пока думаю)
Re[2]: [ksi] Синтаксис диапазонов -- тип range
Здравствуйте, wildwind, Вы писали:


W>А зачем тут шаг?


Чтобы сразу указать его и итерировать в цикле. Или можно взять слайс от массива, тоже с шагом.

Я думал над тем, чтобы шаг не хранить, если он не указан, но решил, что лучше всегда хранить, чтобы можно было потом в программе его проверять без лишних костылей типа проверки наличия поля.

S>>Если нижняя граница не указана, то она равна 0.


W>А почему именно 0, а не -∞, например?


Можно явно указать и минус бесконечность, но итерировать тогда нельзя будет. Какой тогда прок использовать минус бесконечность по умолчанию?
Ещё я думаю, что можно будет явно указать значение null (не задано).

S>>С удовольствием рассмотрю ваши варианты.


W>А если так: Range(8-, 2+)? "+" означает закрытый, "-" открытый.

W>Еcли хочется покороче, можно типа _R(8-, 2+)

_R — это врядли.

Тогда как-то так?
`range(4+, 8-)
`range(4+, 8+)
`range(4-, 8-)
`range(4-, 8+)

* Ключевые слова в ksi с бактика скорее всего будут. Но возможно что с подчёркивания.

Теперь сравним
   ваш вариант    rust+       питон

_range(4+, 8-)    4 .. 8      [4:8]
_range(4+, 8+)    4 ..= 8
_range(4-, 8-)    4 *.. 8
_range(4-, 8+)    4 *..= 8


И с шагом
   ваш вариант+      rust+           питон

_range(4+, 8-, 2)    4 .. 8 : 2      [4:8:2]
_range(4+, 8+, 2)    4 ..= 8 : 2
_range(4-, 8-, 2)    4 *.. 8 : 2
_range(4-, 8+, 2)    4 *..= 8 : 2


И наконец в слайсах
             ваш вариант     rust+                   питон

array[`range(4+, 8-, 2)]     array[4 .. 8 : 2]       array[4:8:2]
array[`range(4+, 8+, 2)]     array[4 ..= 8 : 2]
array[`range(4-, 8-, 2)]     array[4 *.. 8 : 2]
array[`range(4-, 8+, 2)]     array[4 *..= 8 : 2]


В общем пока думаю)