Thanks Jake, the final answer for completeness (using the symbol name from a string) was:
:(f($(Expr(:quote, symbol(:($name)))))) eval()s to: :(f(:abc)) On Wed, Feb 12, 2014 at 4:38 PM, Jake Bolewski <[email protected]>wrote: > Hey Fil, > > More directly answering your question: > > julia> eval(:(f($:(:abc)))) > > or eqivalently > > julia> eval(:(f($(Expr(:quote, :abc))))) > > works. > > Best, > Jake > > > On Wednesday, February 12, 2014 12:30:13 AM UTC-5, Jake Bolewski wrote: >> >> you need to take advantage of quote, see: >> https://groups.google.com/forum/#!topic/julia-dev/YxTEkUJcwL8 >> >> Jake >> >> On Tuesday, February 11, 2014 11:57:16 PM UTC-5, Fil Mackay wrote: >>> >>> Is there not an ambiguity of operator : between expressions and symbols? >>> I am trying to create an expression that calls a function with a symbol >>> parameter, that comes from a string in context of the expression creator: >>> >>> function f(s::Symbol) >>> end >>> >>> f(:abc) # works >>> >>> # get symbol name from a string >>> name = "abc" >>> f(symbol(name)) # works >>> eval(:(f(symbol(name)))) # still works >>> >>> # moving over to using the context of the expression creator to specify >>> the symbol: >>> eval(:(f($(symbol("abc"))))) # nope, this generates: f(abc) >>> eval(:(f(:(:($(symbol("abc"))))))) # bad, generates: f(Expr) >>> >>> # workaround: >>> eval(:(f(:($(symbol("abc")))))) # almost, but generates: >>> f(symbol("abc")) not f(:abc) >>> >>> Is there a trick to generate a more direct expression that eval() to: >>> f(:abc) ? >>> >>>
