Re[3]: F# обращение к элементу кортежа по порядковому номеру
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 26.07.21 00:14
Оценка:
Здравствуйте, varenikAA, Вы писали:

AA>, — типичный пример бритвы окама. лишняя сущность в синтаксисе.


Неправильно ты, дядя Федор, про синтаксис думаешь.
Язык это не система аксиом, его упрощать и обеднять до минимума не очень полезно, и даже вредно. Сахар, добавляющий удобства, это чаще хорошо и правильно. Иначе возникает проблема известная как Turing tarpit.
"Beware of the Turing tar-pit in which everything is possible but nothing of interest is easy."
https://en.wikipedia.org/wiki/Turing_tarpit
Re[4]: F# обращение к элементу кортежа по порядковому номеру
От: varenikAA  
Дата: 26.07.21 01:47
Оценка:
Здравствуйте, D. Mon, Вы писали:

DM>Здравствуйте, varenikAA, Вы писали:


AA>>, — типичный пример бритвы окама. лишняя сущность в синтаксисе.


DM>Неправильно ты, дядя Федор, про синтаксис думаешь.


Ну хорошо, в данном случае какие преимущества у предложенного способа перед матчем?
Может тогда и для массивов ввести вместо arr[0] arr.0 ?
Вот почему-то в лиспе понятие кортеж вообще не используется. Список.

цитата с мсдн

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

☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[3]: F# обращение к элементу кортежа по порядковому номеру
От: Воронков Василий Россия  
Дата: 26.07.21 08:39
Оценка: +1
Здравствуйте, varenikAA, Вы писали:

AA>
AA>x.1
AA>

AA>, — типичный пример бритвы окама. лишняя сущность в синтаксисе.

Этот синтаксис — x.[1] — все равно есть в языке, и то, что он здесь не работает — нелогично и странно. А вообще я не понимаю, откуда у некоторых товарищей такое яростное желание защищать *отсутствие* фишек, которые абсолютно нейтральны, ничему не мешают и строятся на имеющемся синтаксисе.

А по поводу "уродливости" C#... Метки для элементов кортежей, которые живут только в компайл-тайме и разруливаются компилятором, — очень даже простое и изящное решение обсуждаемой здесь проблемы. F# стоило бы присмотреться.
Re[5]: F# обращение к элементу кортежа по порядковому номеру
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 26.07.21 14:56
Оценка:
Здравствуйте, 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".
Отредактировано 26.07.2021 15:28 D. Mon . Предыдущая версия . Еще …
Отредактировано 26.07.2021 14:59 D. Mon . Предыдущая версия .
Re[6]: F# обращение к элементу кортежа по порядковому номеру
От: vaa  
Дата: 01.08.21 05:35
Оценка:
Здравствуйте, D. Mon, Вы писали:

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


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


Свершилось!
☭ ✊ В мире нет ничего, кроме движущейся материи.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.