The lambda example works, but couldn't you do:
function f(x)
  eval(:($x + 1))
end
?

You can still do that in a macro:
macro m()
  quote
    ex = :($x + 1)
    eval(ex)
  end
end

function f(x)
  @m
end

f(1) == 2


What would be a situation where this wouldn't work?

Em terça-feira, 27 de setembro de 2016 09:36:48 UTC-3, Jussi Piitulainen 
escreveu:
>
> You might be able to wrap your expression so as to create a function 
> instead, and call the function with the values of the variables that the 
> actual expression depends on. In Python, because I haven't learned to 
> construct expressions in Julia yet and don't have the time to learn it now:
>
> def f(x): return eval("lambda x: x + 1")(x)
>
>
>
> tiistai 27. syyskuuta 2016 12.28.40 UTC+3 Marius Millea kirjoitti:
>>
>> Hi, is there a way to "eval" something in the current scope? My problem 
>> is the following, I've written a macro that, inside the returned 
>> expression, builds an expression which I need to eval. It looks like this,
>>
>> macro foo()
>>     quote
>>         ex = ...
>>         eval_in_current_scope(ex)
>>     end
>> end
>>
>> Now, you might say I'm using macros wrong and I should just be doing,
>>
>> macro foo()
>>     ex = ...
>> end
>>  
>>
>> but in this case when I build "ex", it needs to occur at runtime since it 
>> depends on some things only available then. So is there any way to go about 
>> this? Thanks. 
>>
>>

Reply via email to