Futher Utilities

Iterator with known eltype

MissingStrategies.typediterFunction
typediter(::Type{ET},iter::IT)
TypedIterator{IT,ET}

Construct a thin wrapper around iterator IT returning eltype ET.

Examples

using SimpleTraits
x = [1,2,missing]
@traitfn fm(x::::IsEltypeSuperOfMissing)  = count(ismissing.(x))

gen = (2*xi for xi in x)  
eltype(gen) == Any
#fm(gen)  # MethodError

gent = typediter(eltype(x), 2*xi for xi in x)
eltype(gent) == eltype(x)
fm(gent) == 1
source

Return macro

MissingStrategies.@returnmissingMacro
@returnmissing(expr)

Return missing, if expr evaluates to missing.

Example

finner(x::Real) = x*2
f1(x) = finner(x)
f2(x) = finner(@returnmissing(x))
f1(3) == f2(3) == 2*3
# error: f1(missing)
ismissing(f2(missing))
source