
Alexandr
27.09.2017
09:50:38
Нет, в обычной Scala

Kirill
27.09.2017
09:51:18
Так медленно или нет, вы уж определитесь :)

Alexandr
27.09.2017
09:51:47
Так что проверка не в рантайме

Denis
27.09.2017
09:52:39

Google

Denis
27.09.2017
09:53:21
Но не факт, не помню

Dmitry
27.09.2017
09:54:08

Denis
27.09.2017
09:54:30
А что так много этих типов?
Или просто лень? ))

Dmitry
27.09.2017
09:54:43
А так, да, клепать свои тайпклассы мне пока больше нравится чем рефлективные вызовы.
Лень))

Denis
27.09.2017
09:54:49
понял ))

Alexey
27.09.2017
09:55:13
Ну ты можешь метод который будет генерить тайп класс ограничить структурно, и шейплесом уже создавать

Dmitry
27.09.2017
09:56:23

Alexey
27.09.2017
09:56:44

Denis
27.09.2017
09:56:58
https://github.com/milessabin/shapeless/pull/657

Dmitry
27.09.2017
09:57:30
Можно как-то описать трейт и потом чтобы шейплесс его наполнил, как-то так?

Denis
27.09.2017
09:58:17
Если бы это было вмерджено, то можно было бы сделать compile time structural typing

Google

Dmitry
27.09.2017
10:00:10
Да, начинаю догонять.. Крутая штука, а что не вмерджили так и не понял.

Alexey
27.09.2017
10:02:41

Dmitry
27.09.2017
10:03:07

Юрий
27.09.2017
10:04:27
Страшные вещи вы советуете

Denis
27.09.2017
10:04:29

Alexey
27.09.2017
10:04:46
и что Оо
implicit def createTypeClass[A <: { def foo: Int }]...

Denis
27.09.2017
10:06:13
так и чем это будет отличаться от простого использования structural typing ?

Alexey
27.09.2017
10:07:09
тем, что это просто прочекает что тайп класс создан для подходящего типа
и никакой рефлексии на рантайме

Dmitry
27.09.2017
10:07:30

Denis
27.09.2017
10:07:47

Alexey
27.09.2017
10:07:54

Dmitry
27.09.2017
10:08:23
Т.е. структурные типы самой скалой в определенных кейсах компилируются?

Alexey
27.09.2017
10:09:01

Dmitry
27.09.2017
10:09:24
Ну да, а потом при вызове делает рефлективный вызов.
Как я понимаю LabelledGeneric только с кейсклассами может работать, т.к. ReprTypes имеет только одну имплементацию CaseClassMacros:
https://github.com/milessabin/shapeless/blob/master/core/src/main/scala/shapeless/generic.scala#L286

Denis
27.09.2017
10:11:04
https://scastie.scala-lang.org/MqgV2xNMSHGLKhsl9Yideg

Alexey
27.09.2017
10:12:00

Google

Dmitry
27.09.2017
10:12:26

Alexey
27.09.2017
10:12:30
тогда макросом изи

Dmitry
27.09.2017
10:12:50

Alexey
27.09.2017
10:13:03

Denis
27.09.2017
10:13:18

hohserg
27.09.2017
10:13:19
Всем привет! Понадобилось сериализовывать OpenHashMap. Подскажите, как подойти к этому делу?
OpenHashMap не сериализуется сам по себе(добавление with Serialization не пашет).
Щас, допишу
Логичным кажется преобразование OpenHashMap to mutable.Map

Alexey
27.09.2017
10:14:18

Dmitry
27.09.2017
10:14:21
тогда макросом изи
Да, тупо напишу макрос с этим единственным методом и все. Благо у меня уже есть отдельный проект ради всяких макросов. Всем спасибо!

KrivdaTheTriewe
27.09.2017
10:14:25
Что почитать ?

Denis
27.09.2017
10:14:36
с макросами - easy

Alexey
27.09.2017
10:14:45

Dmitry
27.09.2017
10:15:45

Alexey
27.09.2017
10:16:28
шейплес для тех, кто не хочет в макросы

KrivdaTheTriewe
27.09.2017
10:18:51

Oleg
27.09.2017
10:18:55

KrivdaTheTriewe
27.09.2017
10:19:01
Или что то другое на ночь стоит ?

Alexey
27.09.2017
10:19:46
либо наоборот
Ну шейплес только для сильных духом, для тех кто любит помедетировать на компиляцию

Oleg
27.09.2017
10:19:54
я бы купил ради обложки

Google

Dmitry
27.09.2017
10:20:16
А тогда еще один вопрос, если я сделаю автоматический вывод такого тайпкласса например, то они для одинаковых классов будут кэшироваться как-то. Т.е. если для одного и того же класса в рвзных файлах.

Oleg
27.09.2017
10:21:30

KrivdaTheTriewe
27.09.2017
10:21:32

Dmitry
27.09.2017
10:22:11
Имея в виду 12 скалу. Этот тапйкласс ведь по факту почти просто лямбдой будет, может там как-то invokeDynamic или типа того ? Не ?

Oleg
27.09.2017
10:22:14

Cirno
27.09.2017
10:22:31
Почему "ламбда", а не "лямбда"?

Aleksander
27.09.2017
10:23:03

Henadz
27.09.2017
10:23:30
щас начнётся
андроид андройд

Oleg
27.09.2017
10:23:36
implict val fooKorolev: Korolev[Foo] = deriveKorolev

Henadz
27.09.2017
10:23:39
биткоин биткойн

Cirno
27.09.2017
10:23:40
Например.

KrivdaTheTriewe
27.09.2017
10:23:51

Cirno
27.09.2017
10:24:14

Oleg
27.09.2017
10:24:15

Henadz
27.09.2017
10:24:51
старославянский против греческого
ворог vs враг

Google

Oleg
27.09.2017
10:25:27

Dmitry
27.09.2017
10:25:40

Oleg
27.09.2017
10:26:54
Ну да.
Вот, короче только вот так вручную и кешировать. Получится "полуавтоматический вывод" как в сёрке, но это норм в большинстве случаев
Вообще ведётся общая дискуссия про когерентныеи тайпклассы, возможно она и приведёт к тому, что компилятор научится кешировать найденные инстансы build-wise https://github.com/lampepfl/dotty/issues/2047

Vadim
27.09.2017
10:31:09
вообще методы вызываемые на structural типах и так кешируютя

Dmitry
27.09.2017
10:31:16

Vadim
27.09.2017
10:37:08
они на MethodHandl'ах - они и кешируются

KrivdaTheTriewe
27.09.2017
10:37:13

Dmitry
27.09.2017
10:39:09

Oleg
27.09.2017
10:45:25

KrivdaTheTriewe
27.09.2017
10:46:03
О чём?
о лямбда и прочих исчислениях книга

Oleg
27.09.2017
10:46:09
типдривен разработка в едрисе устроит тебя?

KrivdaTheTriewe
27.09.2017
10:46:43
ну ваще тип хотелось формализованное что-то общее, а в идрисчате я сижу, да

Oleg
27.09.2017
10:47:52

Daniel
27.09.2017
10:50:07

KrivdaTheTriewe
27.09.2017
10:51:08

Daniel
27.09.2017
10:51:43
я к тому что твой вопрос слишком общий
а так @clayrat владеет лучшим индексированным поиском по связанным тематикам

Alexander
27.09.2017
10:54:40