There’s likely special behaviour around empty lists in Erlang is my best guess. And dialyzer
is widely admitted to not be the best at the job even by Erlang maintainers.
If I were you I’d try going all the way on nested tuples and have an Option
type with {:option, {:some, value}}
and {:option, :none}
and see if Dialyzer chokes on those. I’d guess it wouldn’t.