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