
Mike
27.04.2018
12:57:33
я думал это бот, который накуривает

Dmitriy
27.04.2018
12:58:22

Mike
27.04.2018
12:59:08
Кто, Богдан?
ну если бы в чате был бот с командой 420, ему бы ушло

Oleg
27.04.2018
14:18:35
@scala_ponv

Google

Сергей
27.04.2018
14:36:12
Кто может подсказать, как заставить искаться имплисит в районе явного вызова formatFromIso. Почему не подхватывается composeIso?
https://scastie.scala-lang.org/ZD8lkqYOQYOyvIuNwKPi0w

Alexey
27.04.2018
14:46:19
ambigous implicit
а нет
а да, он не может применить composeIso из-за ambigous implicit

Сергей
27.04.2018
14:48:36
попробую сейчас явно подставить, чтобы увидеть это
Действительно. Спасибо. Буду разбираться дальше.
А вот допустим я убрал вообще composeIso. Возможно ли в принципе заставить скалу как-то выстроить цепочку изоморфизмов через имплиситы? У меня сейчас такое ощущение, что нет.
ps: подобные ответы видел (https://stackoverflow.com/questions/5332801/how-can-i-chain-implicits-in-scala) но они здесь вроде бы не применимы.

Denis
27.04.2018
16:18:19

Oleg
27.04.2018
16:25:15

Сергей
27.04.2018
16:29:41
А как тогда нужно, чтобы руками не композировать?

Daniel
27.04.2018
17:11:33
https://twitter.com/scala_lang/status/989894770947391489?s=21 ?

Nikolay
27.04.2018
17:13:53
там в 2.12.5 кстати добавили -Ybackend-parallelism. кто-нибудь пробовал, есть какой-то профит?

Google

Sergey
27.04.2018
17:42:05
Алло
Коллега
Я же пробовал
Капец)

Nikolay
27.04.2018
17:43:31
так ты не сказал какой прирост в скорости компиляции, коллега

Sergey
27.04.2018
17:44:45
В слаке в треде было, по сравнению с гидрой профита мало
Так и скажи что прослоупочил)

Nikolay
27.04.2018
17:45:22
ээээ, нет

OlegYch
27.04.2018
17:46:40
не заметил профита
но он есть

Mikhail
27.04.2018
17:46:56

OlegYch
27.04.2018
17:47:27
там чота с класлоадерами добавили, это вроде чуть заметнее

Sergey
27.04.2018
17:48:10
Ахах) хз, новая фича поэтому сделали флагом, мое предположение. По факту ускорение на нашем проекте, что важно, весьма незначительное

Timothy
27.04.2018
19:09:52
https://twitter.com/dibblego/status/989609201625268224 было уже?

OlegYch
27.04.2018
19:24:11
удоли

Mikhail
27.04.2018
19:33:04
@odomontois Олежа, я слегка покумекал и глянь чо получилось. Работают имплиситы и имплиситконвершины для ньютайпов без импорта. Я пока не тестировал на предмет сайдэффектов, но на первый взгляд вроде как можно будет это дело проапдейтить в супертегах. https://gist.github.com/rudogma/58f330db4a9c79f56f968587b49d9f1d
@odomontois сейчас еще подумал и вот сайдэффект. поскольку на этапе тайпчека Step.type входит в цепочку, то все его методы компилятору видны. тобишь можно написать обращение к мемберам
x0.koko
и компилятор это дело схавает и даже скомпилирует. однако для этого дела он также генерит asInstanceOf[Step.type], что в райнтаме падает по той естественной причине, что Integer не может быть приведен к Step.type.
Мне этот момент видится как не критичный (можно конечно для этого дела выделить отдельный трейт внутри NewType (на замену this.type), чтобы еще сузить кол-во видимых мемберов - будет чуть чище)


Александр
27.04.2018
23:33:08
Почитал про грейт 10 вещей с graalvm, уточнить уже скала код перегонял в нативный ?

Oleg
28.04.2018
04:46:49

Alexander
28.04.2018
04:54:55

Google

Daniel
28.04.2018
04:58:24
Но там и не могло быть профита.

Oleg
28.04.2018
05:10:08

Alexander
28.04.2018
05:10:51

Daniel
28.04.2018
05:18:47
Старт, кстати, все равно не такой быстрый как у других бинарников или питоновского интерпретатора. Но намного быстрее чем раньше.

Oleg
28.04.2018
05:45:57
Как это моментальный разогрев?
Все классы сразу загружены, и методы сразу скомпилированы в какую-то из бинарных форм, которую им бы дал jit, понятно без слишком агрессивных
Посмотрите, о чем твитнул(а) @contrarivariant: https://twitter.com/contrarivariant/status/989983567034728448?s=09
напомню
Я вообще ничё не знаю про грааль, но правда ли, что я теперь смогу свои фриманатки\тайплевел DSLы проецировать сразу в AST и ЖВМ сможет мне их компилировать и запускать?
и автоспециализацию и всякую херь сможет скалка делать даже без дотти линкеров?

Oleg
28.04.2018
05:59:36
ну может быть не фриманатки, но что-то такое фри
посоны, давайте уже
делайте мне

Daniel
28.04.2018
06:01:06
начало не раньше 20 года
язык ж меняется

Andrey
28.04.2018
06:03:12
Не могу понять за ClassTag, что, зачем и почему, вот например у меня есть метод def foo[T](...): Array[T] = { new Array[T] ... }, почему он не скомпилируется, зачем нужен ClassTag?

Henadz
28.04.2018
06:03:48

Alexey
28.04.2018
06:11:50

Google

Andrey
28.04.2018
06:13:09
Я не писал на Java, мне сложно понять про затирание типов

Admin
ERROR: S client not available


Oleg
28.04.2018
06:29:47
Я не писал на Java, мне сложно понять про затирание типов
У джава есть 9 специфических типов массиов
Object[], byte[], short[], int[], long[], float[], double[], char[], boolean[]
Все, кроме первого хранят не ссылки, а пачки примитивных объектов.
Но первый тоже непростой. Создатели эпично лоханулись и сделали массивы ковариантными. Это значит, что если A <: B, ты можешь передать A[] в место, которое требует B[]
Что же будет, если потребитель решит не только прочитать, но и записать в какую-то ячейку более базовый B? Ведь в исходном месте массив всё ещё может использоваться как набор A?
Оказывается, что жава выбросит рантайм-исключение. Каждый раз при создании массива, она запоминает для какого Class он создавался и не позволяет складывать туда ссылки на неподходящие инстансы .
Вот для этого в скалке существует ClassTag. Для примитивных типов он запомнил, что это за тип и создаст соответствующий примитивный массив, для ссылочных, он запомнил Class и складывает его при создании запоминает его в массиве


Aleksei
28.04.2018
06:31:20
ох блин, Олег тебе надо таки блог вести какой нибудь уже

Max
28.04.2018
06:43:44
гайз кто делал несколько authed сервисов в http4s?
не могу понять почему один сервис валит c 401 еще не дойдя до сервиса к которому урл подходит
https://github.com/http4s/http4s/blob/87eb4b0adf2b56702158907d79bb4509781ace66/server/src/main/scala/org/http4s/server/package.scala#L69

The mirror
28.04.2018
06:46:12
Мини «блог»

Alexander
28.04.2018
07:04:44

The mirror
28.04.2018
07:05:32

Andrey
28.04.2018
07:06:32
Предлагаю открыть филосовскую субботу:
Почему в scala.Option map() оборачивает результат в Some, а не в Option.apply?
В java Optional используется как и ожидается Optional.ofNullable()
Может баг на эту тему был уже? :)

Alexander
28.04.2018
07:07:59
всегда можно сделать flatMap с Option(...), если подразумевается null

Andrey
28.04.2018
07:10:46

Alexey
28.04.2018
07:12:06

Alexander
28.04.2018
07:12:15
не думаю, что Option делался для того, чтобы прятать нулы под капотом

Andrey
28.04.2018
07:12:30

Alexander
28.04.2018
07:12:34
Option(null) это скорее компромис для удобства

Alexey
28.04.2018
07:12:37
В java да для работы с null, в скалке сомнительно
apply как раз был сделан, чтобы штопать дыры между scala и java

Alexander
28.04.2018
07:13:01
ну и Optional в Java имеет мало общего со скаловским

Google

Dim
28.04.2018
07:14:11
Люди, что делать. Вот например пользователь редактирует сложный объект на форме. Что-то пользователь обновит, что-то нет.
Потом все это летит на бэкенд. И как это все обновлять?
(ps. MongoDb, ReactiveMongo) данные летят json-ом.

Andrey
28.04.2018
07:14:59

Oleg
28.04.2018
07:15:10

Alexey
28.04.2018
07:15:16

Andrey
28.04.2018
07:15:30
map-flatMap есть. get-orElse-getOrElse есть.
Основное отличие - что Option это еще и TraversableOnce

Alexey
28.04.2018
07:15:57
В Optional - null считается осутвием значения, а в Option null - это тоже значение

Andrey
28.04.2018
07:16:01
(через конвертер)

Alexander
28.04.2018
07:16:10
https://dzone.com/articles/optional-anti-patterns