Size: a a a

Scala User Group

2020 May 05

Oℕ

Oleg ℕizhnik in Scala User Group
монадические линзы типа get: S => F[A], set : (S, B) => F[T] ?
источник

AS

Alex Sh in Scala User Group
Oleg ℕizhnik
монадические линзы типа get: S => F[A], set : (S, B) => F[T] ?
Где оно такое есть?
Я чот такого в монокле не нашел(в доках).
источник

Oℕ

Oleg ℕizhnik in Scala User Group
В монокле такого и нет
источник

ЮБ

Юрий Бадальянц... in Scala User Group
Alex Sh
Народ, привет.
Вопрос про линзы(такие как Monocle).
Есть ли какая-нть либа, которая умеет в линзы для F[_]?

Ситуация такая - у нас есть много scalacheck.Gen[..] и хочется что-нть такое чтобы смогло композировать эти гены друг с другом, а также переопределять некоторые параметры генерации.
Например у нас есть case class User(registerDate: Instant)
Есть ген userGen: Gen[User] = instantGen.map(User)
Хочется сделать такою линзу, которая могла бы менять registerDate внутри User внутри Gen[..].
В реальных кейсах вложенность registerDate гораздо больше - около 4-5.

Вообще может я чего-то не того хочу и есть альтернатива попроще. Тогда тоже было бы круто услышать.
Ровно эту проблему решаю простейшей либой quicklens.
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Alex Sh
Народ, привет.
Вопрос про линзы(такие как Monocle).
Есть ли какая-нть либа, которая умеет в линзы для F[_]?

Ситуация такая - у нас есть много scalacheck.Gen[..] и хочется что-нть такое чтобы смогло композировать эти гены друг с другом, а также переопределять некоторые параметры генерации.
Например у нас есть case class User(registerDate: Instant)
Есть ген userGen: Gen[User] = instantGen.map(User)
Хочется сделать такою линзу, которая могла бы менять registerDate внутри User внутри Gen[..].
В реальных кейсах вложенность registerDate гораздо больше - около 4-5.

Вообще может я чего-то не того хочу и есть альтернатива попроще. Тогда тоже было бы круто услышать.
А так вам не линзы нужны тут
источник

AS

Alex Sh in Scala User Group
Oleg ℕizhnik
А так вам не линзы нужны тут
Возможно и не нужны. Просто это первое что пришло в голову при виде copy(... = copy(... = copy(... = copy(...))))
источник

ЮБ

Юрий Бадальянц... in Scala User Group
Alex Sh
Возможно и не нужны. Просто это первое что пришло в голову при виде copy(... = copy(... = copy(... = copy(...))))
Попробуй quicklens
источник

AS

Alex Sh in Scala User Group
Юрий Бадальянц
Попробуй quicklens
гуглю )
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Alex Sh
Возможно и не нужны. Просто это первое что пришло в голову при виде copy(... = copy(... = copy(... = copy(...))))
не нужно гуглить quicklens
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Вам достаточно Setter.fromFunctor[F, A, B]
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Его можно скомпозить с линзами глубже
источник

ЮБ

Юрий Бадальянц... in Scala User Group
Это тоже линзы, но они куда проще моноклевских. Они скорее для таких ad hoc преобразований. Но это именно то, что нужно в генераторах и тестах
источник

Oℕ

Oleg ℕizhnik in Scala User Group
И получить Setter
источник

Oℕ

Oleg ℕizhnik in Scala User Group
То же самое в тофу - Update.byFunctor[F, A, B]
источник

AS

Alex Sh in Scala User Group
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Фантастика наткнулся на баг, починенный в 2.13.2
источник

GP

Grigory Pomadchin in Scala User Group
Oleg ℕizhnik
Фантастика наткнулся на баг, починенный в 2.13.2
это какой
источник

Oℕ

Oleg ℕizhnik in Scala User Group
источник

Oℕ

Oleg ℕizhnik in Scala User Group
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Теперь нужно в идее чинить
источник