The short answer is: no. There is an issue on github, I think. Or at least an issue in which this was discussed. If I remember correctly it is a desired feature but with no time plan for an implementation.
On Thu, 2015-09-03 at 11:38, Cristóvão Duarte Sousa <[email protected]> wrote: > (This was already asked in Julia Gitter, but I'm switching to the mailing > list as this may better fit here than in a chat.) > > """ > Is it possible to constraint the type of a bits type parameter? Something > like f{N::Int}(x::SomeParamType{N}) where for N::Int I want to mean that N > is an instance of Int, i.e., 1, 2, -10, 0, etc., and not that it is the > DataType Int. > """ > > Let me put it in another words: > > To have parametric types to be restricted on the parameters they accept is > just a matter of defining constructors in the right way. For example, > although Array{Any, 1.5} is a valid type per se, one cannot create an > instance of it. > > Now imagine I have a type X{T} where it is possible that T is anything > (there are constructors), a DataType or as bits type instance. > I can create methods which dispatch when T is an Integer subtype: > f{T<:Integer}(x::X{T}) = "Integer subtype" > I can create methods which dispatch when T is a specific Integer subtype: > f(x::X{Int}) = "Int" > I can create methods which dispatch when T is a specific Int instance: > f(x::X{4}) = "4" > > I wonder if it is possible to define a method which will dispatch on any > Int instance (be it 1, 2, 0, -10), something like: > f{N::Int}(x::X{N}) = "N" > so that > f(X{Int8}()) returns "Integer subtype", > f(X{Int}()) returns "Int", > f(X{4}()) returns "4", and > f(X{3}()) returns "N" ... > > This was probably asked and replied somewhere else, but I couldn't find it. > > Thanks, > Cheers, > Cristóvão
