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
>
>
>
>
>
>

Reply via email to