It's possible to have a macro in Julia that emulates Python decorators. But it's a separate question whether you really want to do it, there might be more efficient/elegant ways to achieve the same in Julia for a specific use case.
Here's a macro that emulates Python decorators and an example how to use it: julia> macro decorator(dec, func) name = func.args[1].args[1] hiddenname = gensym() func.args[1].args[1] = hiddenname quote $func const $(esc(name)) = $dec($hiddenname) end end julia> foo(f) = x->2*f(x+10) julia> @decorator foo function bar(x) return x+1 end julia> bar(0) 22 This is the same as in Python In [2]: def foo(f): ...: return lambda x: 2*f(x+10) ...: In [3]: @foo ...: def bar(x): ...: return x+1 ...: In [4]: bar(0) Out[4]: 22 Of course, one can also use this for something useful :-), like: julia> logger(f) = x-> (println("input: $x"); result = f(x); println("output: $result"); result) logger (generic function with 1 method) julia> @decorator logger baz(x)=x+1 (anonymous function) julia> baz(3) input: 3 output: 4 4 On Monday, May 9, 2016 at 3:42:22 PM UTC+2, Ford Ox wrote: > > Is it possible to write macro that will work as python decorator?