Missing Values, Nothing & Optional Data

Union{T, Nothing} and Union{T, Missing} are efficiently represented (small-union optimization).

absence of a value (software) no — errors in arithmetic unknown value (statistics) yes — missing + 1 == missing undefined numeric result

Union{T, Nothing} and Union{T, Missing} are efficiently represented (small-union optimization).

x = [1, missing, 3]               # Vector{Union{Missing, Int64}}
sum(x)                            # missing
sum(skipmissing(x))               # 4
coalesce.(x, 0)                   # [1, 0, 3]
ismissing(x[2])
missing == 1                      # missing (three-valued logic)
isequal(missing, missing)         # true
missing || true                   # true
collect(skipmissing(x))
dropmissing(df)                   # DataFrames
passmissing(f)(missing)           # Missings.jl

r = findfirst(==(9), [1, 2])      # nothing
isnothing(r) && println("not found")
something(r, 0)                   # 0 (first non-nothing value)