Hi Lyndon,

The kind words are much welcome.
This, DelegationMacros, is the nicer -- more humanly -- phrasing of some of 
the macros in the earlier version.  
I expect to port some more of that version to the nicer style.  Please let 
me know if you need some combination of
number of fields to delegate into/through and count of variables to operate 
over.  I'd be happy to supply that with this.

-- Jeffrey


On Tuesday, September 6, 2016 at 9:56:31 PM UTC-4, Lyndon White wrote:
>
> 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