> However, is there a reason why a simpler way to extend methods isn't 
> provided? While one can "read" methods from a function, lack of "write" 
> support to modify / add / delete methods from a generic function makes me 
> curious.

Well usually it is trivial:

julia> f() = 1
f (generic function with 1 method)

julia> f(x) = x
f (generic function with 2 methods)

# overwrite:
julia> f(x) = 2x
f (generic function with 2 methods)

Julia is generally geared towards function definitions in a global
scope.  Actually maybe something like this could help you:

julia> function u end
u (generic function with 0 methods)

julia> g() = (global u; u() = 1)
g (generic function with 1 method)

julia> t = g()
u (generic function with 1 method)

julia> t()
1

(only 0.4)

> On Friday, July 24, 2015 at 1:49:42 AM UTC+5:30, Vinuth Madinur wrote:
>>
>> Cool. Had missed the module part. So they give an accessible isolated 
>> scope. 
>> This should do it.
>>
>> Thanks for the help!
>>
>>
>> On Friday, July 24, 2015 at 1:43:16 AM UTC+5:30, Tom Breloff wrote:
>>>
>>> So... you want a method name globally accessible, but you don't want to 
>>> put in global scope?  Maybe you should use a Module instead of a let 
>>> block.  Your first method definition goes in the scope of "MyModule", and 
>>> then later on you can add to that method definition by defining a function: 
>>> "MyModule.myFunction(x::MyType) = ..."
>>>
>>> See: http://julia.readthedocs.org/en/latest/manual/modules/
>>>
>>> On Thursday, July 23, 2015 at 4:08:45 PM UTC-4, Vinuth Madinur wrote:
>>>>
>>>> Please ignore the "anonymous function" part above. 
>>>>
>>>> I'm creating a function in my macro inside a let block so that it 
>>>> doesn't pollute the surrounding scope. Later on, when the same macro is 
>>>> used on a different expression, I wont be able to access this same 
>>>> function 
>>>> to extend it inside another let block. I was looking for a way to do this.
>>>>
>>>>
>>>>
>>>> On Friday, July 24, 2015 at 1:12:36 AM UTC+5:30, Vinuth Madinur wrote:
>>>>>
>>>>> It's a little complicated scenario to explain. It's like this:
>>>>>
>>>>> I have a macro that replaces an expression with a function whose name 
>>>>> isn't fixed / known / is anonymous / created inside a closured scope. 
>>>>> Later 
>>>>> on I want the ability to add methods to this.
>>>>>
>>>>>
>>>>>
>>>>> On Friday, July 24, 2015 at 12:57:01 AM UTC+5:30, Tom Breloff wrote:
>>>>>>
>>>>>> Can you tell us more about your end-goal?  I have a feeling that 
>>>>>> you're not thinking about this in a Julian way, but I'm not entirely 
>>>>>> sure 
>>>>>> what you want to be able to do.
>>>>>>
>>>>>> On Thu, Jul 23, 2015 at 3:21 PM, Vinuth Madinur <[email protected]> 
>>>>>> wrote:
>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> Is there a way to add a method to a generic function during runtime? 
>>>>>>> Or to merge two generic functions? For example:
>>>>>>>
>>>>>>>
>>>>>>> function abc end
>>>>>>> function xyz end
>>>>>>>
>>>>>>> function add_method(method, func)
>>>>>>>       #Add method to func
>>>>>>> end
>>>>>>>
>>>>>>> add_method(xyz) do x::Int
>>>>>>>    x*2
>>>>>>> end
>>>>>>>
>>>>>>> or
>>>>>>>
>>>>>>> add_method(x -> x * 4, abc)
>>>>>>>
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Vinuth.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>

Reply via email to