The realization is that validation is a way to emulate having a more specific type system. You don't have a type that represents all strings that happen to be valid, parseable numbers, and you don't have a type that is all nonzero numbers.
Validations are _epimorphisms_. Mapping is an _epimorphism_. The difference being how you structure them either lends it self to being serially workable or parallellably(?) workable.
I just had an epiphany about the disconnect between mapping and validation.
Background:
Deserializing 2 strings into 2 numbers, and making sure both are nonzero.
If they're both numbers, and both are zero, you can easily get information about _both_ of them being wrong. That leads to a good user experience.
However, if one of them is a string without any digits in it, that's a mapping error, and you only get to see that one error (in most ecosystems). Nothing about the other one. Bad user experience.
I just had the pleasure of writing a `@NotNullIsland` validation annotation for a java coordinate type.
compooters and the outdoors please
More active on my private alt. If I seem silent on important issues it's because I'm saying it all there.