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

Сообщение Re[5]: F# обращение к элементу кортежа по порядковому номеру от 26.07.2021 14:56

Изменено 26.07.2021 15:28 D. Mon

Re[5]: F# обращение к элементу кортежа по порядковому номеру
Здравствуйте, varenikAA, Вы писали:

AA>Ну хорошо, в данном случае какие преимущества у предложенного способа перед матчем?


Банально меньше буковок, и не придется менять, если тупл при рефакторинге станет длиннее или короче.

AA>Может тогда и для массивов ввести вместо arr[0] arr.0 ?


Это уже экстремизм.

AA>Вот почему-то в лиспе понятие кортеж вообще не используется. Список.


Там обычно есть гетерогенный вектор, который работает как тупл и дает элементы по индексу.
Clojure:
> (let [a ["zero" 1 'two]] (a 2))
two


Racket:
> (let ((v #("zero" 1 two))) (vector-ref v 2))
'two
Re[5]: F# обращение к элементу кортежа по порядковому номеру
Здравствуйте, varenikAA, Вы писали:

AA>Ну хорошо, в данном случае какие преимущества у предложенного способа перед матчем?


Банально меньше буковок, и не придется менять, если тупл при рефакторинге станет длиннее или короче.

AA>Может тогда и для массивов ввести вместо arr[0] arr.0 ?


Это уже экстремизм.

AA>Вот почему-то в лиспе понятие кортеж вообще не используется. Список.


Там обычно есть гетерогенный вектор, который работает как тупл и дает элементы по индексу.
Clojure:
> (let [a ["zero" 1 'two]] (a 2))
two


Racket:
> (let ((v #("zero" 1 two))) (vector-ref v 2))
'two


Есть и еще более прямой вариант кортежей — возврат нескольких значений.
(define (foo x)
  (values "hi" x (* x x)))
(let-values ([(a b c) (foo 5)])
  (format "~a, ~a and ~a" a b c))

Возвращает "hi, 5 and 25".