Empty set differs from NULL is that you get an empty set if you apply an element-wise function over it (which most operators and functions in EdgeQL are).
> Why not just use an Option/Maybe type?
We are considering adding algebraic types and a syntax to match them, but it ultimately boils down to taste and use case:
SELECT value ?? "fallback in case of empty"
is not fundamentally different from (hypothetical): SELECT
MATCH value
CASE Some(non_empty_val) THEN non_empty_val
CASE Empty THEN "fallback in case of empty"
END;