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

Сообщение Re[3]: А скалисты тут есть? от 29.03.2024 20:23

Изменено 30.03.2024 18:46 novitk

Re[3]: А скалисты тут есть?
Здравствуйте, scf, Вы писали:

scf>А давайте. Я бы сказал, что пациент жив и развивается, просто функциональный хайп вокруг него угас, а нового (пока) нет.

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

scf>Для затравки — как вы используете inline? Я не очень люблю метапрограммирование из-за невозможности отладки, сложности написания и странных багов, но конкретно inline позволяет писать интересные абстракции без оверхеда.

Не использую. В плюсах тоже не использовал, возможно в силу специфики — я использую фундаментальный и числодробительные библиотеки, а не пишу.

scf>Например, переписать scala.util.chaining в более любимый мне по котлину let и also. Кто не знаком, это очень простые и очень полезные операции для структурирования кода. Например:

scf>"hello".let(_ + " world").also(println)
pipe использую, но синтаксически предпочел бы |>, как в F#. "Let/also" имхо не интуитивно.
Другое дело, что в скале оно так не нужно, так как операции над коллекциями сделаны через методы и сцепляются через точку.

scf>Или написать foreach, который можно использовать везде, а не рисовать руками while по индексу в критичном коде.

Честно говоря я предпочту рисовать руками и не забивать голову усложненной семантикой foreach. У тебя ведь итератор никуда не делся и ты просто помогаешь компилятору с unboxing в частном случае.
Однако подобная техника имеет право на жизнь. Известный мне пример в стандартной библиотеке здесь. Однако от него отказались в следующих версиях выделив search в SeqOps и используя обычный adhoc полиморфизм.
Re[3]: А скалисты тут есть?
Здравствуйте, scf, Вы писали:

scf>А давайте. Я бы сказал, что пациент жив и развивается, просто функциональный хайп вокруг него угас, а нового (пока) нет.

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

scf>Для затравки — как вы используете inline? Я не очень люблю метапрограммирование из-за невозможности отладки, сложности написания и странных багов, но конкретно inline позволяет писать интересные абстракции без оверхеда.

Не использую. В плюсах тоже не использовал, возможно в силу специфики — я использую фундаментальные и числодробительные библиотеки, а не пишу.

scf>Например, переписать scala.util.chaining в более любимый мне по котлину let и also. Кто не знаком, это очень простые и очень полезные операции для структурирования кода. Например:

scf>"hello".let(_ + " world").also(println)
pipe использую, но синтаксически предпочел бы |>, как в F#. "Let/also" имхо не интуитивно.
Другое дело, что в скале оно так не нужно, так как операции над коллекциями сделаны через методы и сцепляются через точку.

scf>Или написать foreach, который можно использовать везде, а не рисовать руками while по индексу в критичном коде.

Честно говоря я предпочту рисовать руками и не забивать голову усложненной семантикой foreach. У тебя ведь итератор никуда не делся и ты просто помогаешь компилятору с unboxing в частном случае.
Однако подобная техника имеет право на жизнь. Известный мне пример в стандартной библиотеке здесь. Однако от него отказались в следующих версиях выделив search в SeqOps и используя обычный adhoc полиморфизм.