dave08
10/25/2023, 11:51 AM@optics data class Foo(val bar: SomeEnum?)
and if I run Foo.bar.set(Foo(null), SomeEnum.baz)
it gets set properly, whereas if I run Every.list<Foo>().bar.set(listOf(Foo(null)), SomeEnum.baz)
it stays null... is there any way to get this to work (set it to baz...)?bar
being generated is using Option
, so the behaviour makes sense, the question is if there's some way around this...Alejandro Serrano.Mena
10/25/2023, 12:16 PMnull
to not-null... 🤔dave08
10/25/2023, 12:25 PMAlejandro Serrano.Mena
10/25/2023, 12:31 PMFoo.bar
, I'm very surprised that Foo.bar.set(Foo(null), SomeEnum.baz)
actually sets the null
dave08
10/25/2023, 12:33 PMpublic inline val Foo.Companion.bar: arrow.optics.Optional<Foo, SomeEnum> inline get() = arrow.optics.Optional(
getOrModify = { foo: Foo -> foo.`bar`?.right() ?: foo.left() },
set = { foo: Foo, value: SomeEnum -> foo.copy(`bar` = value) }
)
Alejandro Serrano.Mena
10/25/2023, 12:38 PMset
should only set when not nulldave08
10/25/2023, 12:40 PMAlejandro Serrano.Mena
10/25/2023, 12:42 PMdave08
10/25/2023, 12:44 PMAlejandro Serrano.Mena
10/25/2023, 12:45 PMdave08
10/25/2023, 12:45 PMAlejandro Serrano.Mena
10/25/2023, 12:47 PMdave08
10/25/2023, 12:49 PMAlejandro Serrano.Mena
10/25/2023, 12:49 PMLens<Foo, SomeEnum?>
(instead of Optional<Foo, SomeEnum>
, notice the ?
in the lens)val <A> Every<A, Foo>.bar: Every<A, SomeEnum?> = this + Foo.barAsLens
dave08
10/25/2023, 12:57 PMAlejandro Serrano.Mena
10/25/2023, 1:02 PMdave08
10/25/2023, 1:02 PMAlejandro Serrano.Mena
10/25/2023, 1:03 PMarrow-2
branchdave08
10/25/2023, 1:04 PMAlejandro Serrano.Mena
10/25/2023, 1:05 PMarrow-2
the "main" branch, then we should start releasing alphasdave08
10/25/2023, 1:07 PMAlejandro Serrano.Mena
10/25/2023, 1:07 PMdave08
10/25/2023, 1:08 PMsindrenm
10/25/2023, 1:15 PM