Dr. Friedrich
Или это оверрайд какой-то? Тут я мб туплю действительно
Viacheslav
Ох уж эта современная вёрстка
Dr. Friedrich
Короче, мне на этом примере действительно смысел непонятен, почему это должно быть лучше,
Dr. Friedrich
На прошлом ICFPC мы пытались использовать Scala, и сдуру взяли fastparse
Dr. Friedrich
А он как раз в таком вот стиле написан
Dr. Friedrich
def number[_: P]: P[Int] = P( CharIn("0-9").rep(1).!.map(_.toInt) )
Dr. Friedrich
Это разные P или одна и та же?
Dr. Friedrich
А хрен разбери!
Dr. Friedrich
В итоге что-то набросали, а потом пукнуть в его направлении боялись — при любом мельчайшем телодвижении там всё разъёбывало, и не отладить
Dr. Friedrich
И это ещё лайтовый случай, да
Dr. Friedrich
@DogeShibu, о, у меня серьёзный вопрос
Dr. Friedrich
В Scala3 сделают using, наконец?
Doge
А зачем val console = test?
Это уже чисто зио-проблемы. А так вон, в хаскеле было бы: do test <- TestConsole.makeTest TestConsole.defaultData provide test out <- test.output assert $ ... Одно и то же по сути, а так просто придирки по синтаксису выходят
Dr. Friedrich
Вроде всё понятно.
Dr. Friedrich
В Scala3 сделают using, наконец?
А то без этого у меня весь код погряз в try { } finally { smth.close() }
Doge
А то без этого у меня весь код погряз в try { } finally { smth.close() }
inline функцию сделай для этого и вся история
Dr. Friedrich
https://github.com/codingteam/icfpc-2019/blob/5e625d27a36abfca8443f1bf94b847d86b13af23/src/main/scala/org/codingteam/icfpc2019/AppEntry.scala#L292-L295 а вот тут даже бага была — я по первости закрывал не то
Dr. Friedrich
Ayrat
Даже в жабе есть
Dr. Friedrich
Даже в жабе есть
Ну, там тоже довольно хуёво сделали
Dr. Friedrich
Кажись, там только для AutoCloseable это работает?
Doge
А чего в стдлибу не сделают?
scala.util.Using, но он на любителя
Dr. Friedrich
Но уже лучше, чем в Scala.
Dr. Friedrich
scala.util.Using, но он на любителя
Я помню токо какой-то scala-arm
Dr. Friedrich
Который вечно отставал от компилятора на одну мажорную версию
Dr. Friedrich
И поэтому его абсолютно невозможно было использовать
Dr. Friedrich
try( resource) { ... }
Я те говорю, это ток для AutoCloseable
Dr. Friedrich
Почему-то обычный Closeable не осилили
Dr. Friedrich
А в легаси коде про AutoCloseable не знали
Dr. Friedrich
И поэтому приходится делать «ехал враппер через враппер».
Dr. Friedrich
Кажись, там ещё с исключениями был какой-то идиотизм
Dr. Friedrich
Closeable::close кидает IOException, а AutoCloseable::close кидает Exception
Dr. Friedrich
Ну, тут, кажись, получше таки сделали
Dr. Friedrich
Попытались исправить ошибки прошлого
Doge
Кажись, там только для AutoCloseable это работает?
Тогда тебе действительно только с scala 3 inline и сделать свою утиную типизацию для close. Благо там это не сложно
Dr. Friedrich
Тогда тебе действительно только с scala 3 inline и сделать свою утиную типизацию для close. Благо там это не сложно
Мне не очень надо утиную, меня бы устроило решение, которое работает для Closeable и AutoCloseable.
Dr. Friedrich
scala-arm так вообще кастомный деструктор позволял определить, кажется
Dr. Friedrich
Вообще прям ракетная наука
Doge
Мне не очень надо утиную, меня бы устроило решение, которое работает для Closeable и AutoCloseable.
Ты можешь через scala.util.Using, там через тайпкласс определяется как закрывать ресурс. Достаточно сделать его реализации для всех Closeable и будет работать
Dr. Friedrich
Ребят, знаете, что охуенно?
Dr. Friedrich
Стабильность — это охуенно
Dr. Friedrich
По сей день scala-arm до сих пор отстаёт от компилятора на одну мажорную версию :)
Dr. Friedrich
Казалось бы, релизный цикл Scala ощутимо забуксовал с 2016 года
Dr. Friedrich
Поэтому мейнтейнерам ценою нечеловеческих усилий пришлось забуксовать так же сильно
Ayrat
Не получалось
Dr. Friedrich
> 2.13 already has try-with-resources. O____O
Dr. Friedrich
Я вот 2.13 ни разу не удосужился потрогать
Ну, на самом деле, она не такая древняя, как я думал. Всего-то год назад вышла
Doge
> 2.13 already has try-with-resources. O____O
Только не говорите, что они про Using так
Dr. Friedrich
Только не говорите, что они про Using так
Хз про что, я пока не смог нагуглить
Dr. Friedrich
А вот 2.12 вышла в ноябре 2016 года, там была пробуксовочка
Dr. Friedrich
Щас норм
Dr. Friedrich
Минорную наверное. Они ж не на скала 1 пилят?
Я под «мажорной» имел в виду бинарно-несовместимую
Dr. Friedrich
Ну т.е. 2.12 vs 2.13
Ayrat
Понимаю
Dr. Friedrich
Потому что там же тупо зделоно, нужно всё перекомпилять
Ayrat
Да вроде и в пределах 2.хх нужен кросскомпайл
Ayrat
Пакеты особо под 2.11 или под 2.12 тут и там
Ayrat
У - удобно
Dr. Friedrich
Под 2.13 нужно перекомпилять
Ayrat
spark-json_2.11:1.2.3
Dr. Friedrich
Под 2.13.3 — нет
Dr. Friedrich
Слава кт-лху
Ayrat
Да, в скале йобнутая экосистема
Ayrat
Но местные терпят
Dr. Friedrich
Ты просто не видал scala.js
Dr. Friedrich
Это там ёбнутая
Dr. Friedrich
А в основной скале ещё можно жить в сравнении с этим
Андрей
По сей день scala-arm до сих пор отстаёт от компилятора на одну мажорную версию :)
там строк пять вся Scala-arm, типа leftPad, даже не знаю зачем её в зависимости тащить.
Danil
https://twitter.com/davidfowl/status/1281979493612044288?s=19 😏