The {} construct seems awfully close to NULL. Not sure I understand the fundamental difference -- having a third value in boolean contexts still introduces 3VL.
Why not just use an Option/Maybe type?
Why not just use an Option/Maybe type?
> 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;It still sounds like NULL -- I must be missing something.
SELECT 'one' IF value = 1 ELSE 'not one'
If value is an empty set, then the result is _always_ an empty set, unlike SQL that pretends NULL values are actually boolean for the purposes of the condition. EdgeQL expressions are, essentially, set comprehensions, the above is equivalent to this Python expression: {'one' if v = 1 else 'not one' for v in value}