On Thu, 2016-09-15 at 01:19, Jeffrey Sarnoff wrote: > Thanks for updating your work. > If there is a form that allows a function to be defined that has > multidispatch over trait and also over type, please provide an example. > (If it is already there, please direct me to that example).
Yep, that was missing in the docs, thanks! I added a section with example here: https://github.com/mauro3/SimpleTraits.jl#details-of-method-dispatch Basically, dispatch first happens on the types as usual. If the method thus selected is a trait-method then trait dispatch kicks in. This is how it naturally happens with Tim's trick but also how it makes most sense (to me). > On Wednesday, September 14, 2016 at 6:04:04 AM UTC-4, Mauro wrote: >> >> There is --at times-- some interest on this list about traits, enough >> that I thought the noise to announce the registration of this traits >> package is warranted. In brief, traits group types into sets >> independent of the type hierarchy and let functions dispatch on those >> traits instead of on types. >> >> The package can be found here: >> https://github.com/mauro3/SimpleTraits.jl >> >> SimpleTraits.jl provides macros to automate *Tim's trait trick*. A >> brief example (more can be found in the README): >> >> using SimpleTraits >> # define a trait: >> @traitdef IsNice{X} >> >> # add some types to the trait: >> @traitimpl IsNice{Int} >> @traitimpl IsNice{String} >> >> # define a function dispatching on this trait and its negation: >> @traitfn f{X; IsNice{X}}(x::X) = "Very nice!" >> @traitfn f{X; !IsNice{X}}(x::X) = "Not so nice!" >> >> # use that function like any other function >> f(5) # => "Very nice!" >> f("a") # => "Very nice!" >> f(6.0) # => "Not so nice!" >> >> >> Tim Holy, indeed the inventor of the trick named after him, uses >> SimpleTraits in the overhaul of his Images.jl package [1,2] (and was who >> prodded me to register SimpleTraits.jl). The "blurb" in my README is: >> >> Tim Holy endorses SimpleTraits, a bit: "I'd say that compared to >> manually writing out the trait-dispatch, the "win" is not enormous, >> but it is a little nicer." I suspect that — if you don't write >> Holy-traits before breakfast — your "win" should be greater ;-) >> >> [1] https://github.com/timholy/Images.jl/issues/542 >> [2] https://github.com/JuliaImages/ImageAxes.jl >>
