spotify / dataenum

Algebraic data types in Java.
Apache License 2.0
166 stars 16 forks source link

add safeAsX(): Optional<X> method #40

Open tho-graf opened 1 year ago

tho-graf commented 1 year ago

Hi there, coming from languages with sum types, is such a punishment to use java. We actually wrote handmade ADTs like your library is generating. I really like how less you have to type and what is generated for you. :heart:

This library already generates the

isX(): Boolean and asX(): X

we added in our hand wrote code a asSafeX(): Optional<X> method. This is more typesafe and could actually replace both methods

isX() is asSafeX().isPresent() and asX() is asSafeX().get()

but you could also do typesafe stuff like asSafeX().map(x=>2*x).orElse(42)

Can you image to add this method?

Cheers Thomas

pettermahlen commented 1 year ago

Hi,

Glad to hear you find it useful! We're not using dataenum a lot internally, since it was mainly written for a usecase in Android development, and we've moved to Kotlin which has better support for ADTs than Java. So we're not going to prioritise adding features ourselves - but if you are up for it, feel free to create a PR adding asSafeX(), I can help getting it merged and released.