I do have it in my own code. I just think it would be a useful utility for others.

Another difference is that Julia can’t infer that element type of that array comprehension:

```
julia> a = [1, nothing];
julia> function simple_skipnothing(itr)
[x for x in itr if x != nothing]
end
simple_skipnothing (generic function with 1 method)
julia> @code_warntype simple_skipnothing(a)
Variables:
#self# <optimized out>
itr::Array{Any,1}
#5 <optimized out>
#6 <optimized out>
isz <optimized out>
et <optimized out>
v1 <optimized out>
st <optimized out>
#temp#@_9 <optimized out>
#temp#@_10::Array{_,1} where _
Body:
begin
SSAValue(3) = $(Expr(:new, Base.Iterators.Filter{##6#8,Array{Any,1}}, :($(QuoteNode(#6))), :(itr)))
SSAValue(4) = $(Expr(:new, Base.Generator{Base.Iterators.Filter{##6#8,Array{Any,1}},##5#7}, :($(QuoteNode(#5))), SSAValue(3)))
$(Expr(:inbounds, false))
# meta: location array.jl collect 464
#temp#@_10::Array{_,1} where _ = $(Expr(:invoke, MethodInstance for grow_to!(::Array{Any,1}, ::Base.Generator{Base.Iterators.Filter{##6#8,Array{Any,1}},##5#7}), :(Base.grow_to!), :($(Expr(:foreigncall, :(:jl_alloc_array_1d), Array{Any,1}, svec(Any, Int64), Array{Any,1}, 0, 0, 0))), SSAValue(4)))
goto 8 # line 471:
8:
# meta: pop location
$(Expr(:inbounds, :pop))
return #temp#@_10::Array{_,1} where _
end::Array{_,1} where _
```