Nice work. I spotted https://github.com/Jeffrey-Sarnoff/Delegate.jl last week and was pretty keen on it. Yet to use it but really looks like it will solve a lot of my irritation with Composition as a Inheritance.
What is the relationship between Delegate.jl and DelegateMacros.jl? Is Delegate.jl deprecated? Is there non-overlapping features On Wednesday, 7 September 2016 06:14:22 UTC+8, Jeffrey Sarnoff wrote: > > This offers updated macros to assist with delegating into/through fields > of a defined type. > > Two macros apply a function to field value(s) yielding the functional > result; > and two others do that and then rewrap the result in the source type. > > The exports are: > @delegate_oneField, > @delegate_oneField_fromTwoVars, > @delegate_oneField_asType, > @delegate_oneField_fromTwoVars_asType > > They work so: > > import Base:string, show, (<), (<=), abs, (-), (+), (*) > > immutable MyInt16 > value::Int16 > end > > three = MyInt16(3) > seven = MyInt16(7) > > > @delegate_oneField( MyInt16, value, [string, show]) > > string(three) == "3" # true > show(seven) # 7 > > > @delegate_oneField_fromTwoVars( MyInt16, value, [ (<), (<=) ] ) > > three < seven # true > seven <= seven # true > > > @delegate_oneField_asType( MyInt16, value, [abs, (-)]) > > abs(three) == three # true > -seven == MyInt16(-7) # true > > > @delegate_oneField_fromTwoVars_asType( MyInt16, value, [ (+), (*) ] ) > > three + seven == MyInt16(3+7) # true > three * seven == MyInt16(3*7) # true > > > > > >
