Size: a a a

Scala User Group

2020 June 07

S

Simon in Scala User Group
Oleg ℕizhnik
В любом случае обычнейший GenLens/GenContains проще и надёжнее
несомненно
сама идея генерировать линзу на основе типов натыкается на проблему неуникальности полей по типам, что довольно болезненно
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Ну в принципе, если нужен сеттер и фолд, их можно комбинировать
источник

S

Simon in Scala User Group
Oleg ℕizhnik
Через магнолию, как упомянул симеон, всё равно бойлерплейтно, если делать тупекласс с параметром, его дериватор нужно будет отдельной строкой в стабильное имя записывать.
Т.е. что-то вроде

val lensAdress = new LensDerive[Address]
lensAdress [UserInfo].set(...)(...)
зачем отдельной строкой?
anyLend[A, B].set(...) работает
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Simon
зачем отдельной строкой?
anyLend[A, B].set(...) работает
в магнолии так не сделаешь
источник

S

Simon in Scala User Group
сделаешь
источник

Oℕ

Oleg ℕizhnik in Scala User Group
макрос деривации требует одномесный конструктор
источник

S

Simon in Scala User Group
я делал
источник

Oℕ

Oleg ℕizhnik in Scala User Group
ну покажи
источник

S

Simon in Scala User Group
посмотри zio-config-magnolia тесты
источник

Oℕ

Oleg ℕizhnik in Scala User Group
ну кинь ссылку на исхожник
источник

S

Simon in Scala User Group
ща
источник

S

Simon in Scala User Group
источник

S

Simon in Scala User Group
можно было бы сделать на методе apply, а не descriptor, но когда я перепиливал, в доках уже везде был descriptor
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Здесь деривация одноместного Descriptor
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Что это доказывает?
источник

S

Simon in Scala User Group
а... ты про сигнатуру Magnolia.gen?
источник

S

Simon in Scala User Group
заметь, что она тут нарушена
источник

S

Simon in Scala User Group
из-за чего он перевызывается в кастомном макросе
источник

S

Simon in Scala User Group
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Я про то, что если нужно вывести
Foo[A, B] в чистой магнолии, один из тайп-параметров выносить нужно
источник