I am trying to stuff quite a bit of information into parameters of a type, in the hope that dispatching on this will create efficient code. Doing this, I ran into the question of what is allowed, exactly.
Is the following correct: a value V
is valid for a type parameter iff either
isbits(V)
isa(V, Symbol)

isa(V, Type)
Is there anything else?
To make things concrete, what I am trying to encode as type parameters are a return type, and a Vector{Pair{Int,Type}}
. The latter does not work, but I can split the pairs, ending up two vectors, which works.