Re: [julia-users] Re: How to feval?

2015-10-22 Thread Stefan Karpinski
This will not be fast. It's also wildly insecure if the string come from an
external source. I'd strongly recommend figuring out a different approach
to what you're doing, but it's hard to provide guidance without more
context.

On Thu, Oct 22, 2015 at 12:34 PM, Alex Ames 
wrote:

> You could define your own feval:
>
> feval(fn_str, args...) = eval(parse(fn_str))(args...)
>
> This has the advantage of accepting anonymous functions and multiple
> arguments if necessary:
> julia> feval("sin",5.0)
> -0.9589242746631385
>
> julia> fn_str = "a_plus_b(a,b) = a + b"
> "a_plus_b(a,b) = a + b"
>
> julia> feval(fn_str,2,3)
> 5
>
> On Thursday, October 22, 2015 at 8:20:33 AM UTC-5, J Luis wrote:
>>
>> Thanks, at least it's a place to start.
>>
>> quinta-feira, 22 de Outubro de 2015 às 14:10:44 UTC+1, Kristoffer
>> Carlsson escreveu:
>>>
>>> Maybe
>>>
>>> julia> eval(Symbol("sin"))(5.0)
>>> -0.9589242746631385
>>>
>>> Not sure if this is the best solution.
>>>
>>>
>>> On Thursday, October 22, 2015 at 2:57:31 PM UTC+2, J Luis wrote:

 Hi,

 I need to convert this piece of Matlab code

   [ps, orig_path] = feval(str2func(test), out_path);

 where 'test' is the name of a function and 'out_path' it unique input
 argument. I have read and re-read the eval function and for once it's clear
 for me how it works (sorry, I find this sentence highly cryptic "Evaluate
 an expression in the given module and return the result" ) but worst, I
 don't see anywhere how it could call a function with input arguments.

 How can I achieve the same result in Julia?

 Thanks.

>>>


Re: [julia-users] Re: How to feval?

2015-10-22 Thread J Luis
Speed is not critical here. I am porting this script

   
http://gmt.soest.hawaii.edu/projects/gmt-matlab-octave-api/repository/changes/trunk/src/gmtest.m

that will call the test scripts that live, as for example, here


http://gmt.soest.hawaii.edu/projects/gmt/repository/show/branches/5.2.0/doc/scripts/ml

and compare the produced output with the reference PS file that is also in 
the testing dirs.

If it works, as I hope and will test later. It's good enough for me but off 
course faster alternatives are always wellcome.

Thanks

quinta-feira, 22 de Outubro de 2015 às 18:16:05 UTC+1, Stefan Karpinski 
escreveu:
>
> This will not be fast. It's also wildly insecure if the string come from 
> an external source. I'd strongly recommend figuring out a different 
> approach to what you're doing, but it's hard to provide guidance without 
> more context.
>
> On Thu, Oct 22, 2015 at 12:34 PM, Alex Ames  > wrote:
>
>> You could define your own feval:
>>
>> feval(fn_str, args...) = eval(parse(fn_str))(args...)
>>
>> This has the advantage of accepting anonymous functions and multiple 
>> arguments if necessary:
>> julia> feval("sin",5.0)
>> -0.9589242746631385
>>
>> julia> fn_str = "a_plus_b(a,b) = a + b"
>> "a_plus_b(a,b) = a + b"
>>
>> julia> feval(fn_str,2,3)
>> 5
>>
>> On Thursday, October 22, 2015 at 8:20:33 AM UTC-5, J Luis wrote:
>>>
>>> Thanks, at least it's a place to start.
>>>
>>> quinta-feira, 22 de Outubro de 2015 às 14:10:44 UTC+1, Kristoffer 
>>> Carlsson escreveu:

 Maybe

 julia> eval(Symbol("sin"))(5.0)
 -0.9589242746631385

 Not sure if this is the best solution.


 On Thursday, October 22, 2015 at 2:57:31 PM UTC+2, J Luis wrote:
>
> Hi,
>
> I need to convert this piece of Matlab code
>
>   [ps, orig_path] = feval(str2func(test), out_path);
>
> where 'test' is the name of a function and 'out_path' it unique input 
> argument. I have read and re-read the eval function and for once it's 
> clear 
> for me how it works (sorry, I find this sentence highly cryptic "Evaluate 
> an expression in the given module and return the result" ) but worst, I 
> don't see anywhere how it could call a function with input arguments.
>
> How can I achieve the same result in Julia?
>  
> Thanks. 
>

>

Re: [julia-users] Re: How to feval?

2015-10-22 Thread J Luis
Anyway, unfortunately none of the above solutions work for files. If the 
file is called "GMT_insert.jl", and is in the path, I get variations around 
(+ file extension - file extension) of

ERROR: UndefVarError: GMT_insert not defined
 

quinta-feira, 22 de Outubro de 2015 às 18:30:04 UTC+1, J Luis escreveu:
>
> Speed is not critical here. I am porting this script
>
>
> http://gmt.soest.hawaii.edu/projects/gmt-matlab-octave-api/repository/changes/trunk/src/gmtest.m
>
> that will call the test scripts that live, as for example, here
>
> 
> http://gmt.soest.hawaii.edu/projects/gmt/repository/show/branches/5.2.0/doc/scripts/ml
>
> and compare the produced output with the reference PS file that is also in 
> the testing dirs.
>
> If it works, as I hope and will test later. It's good enough for me but 
> off course faster alternatives are always wellcome.
>
> Thanks
>
> quinta-feira, 22 de Outubro de 2015 às 18:16:05 UTC+1, Stefan Karpinski 
> escreveu:
>>
>> This will not be fast. It's also wildly insecure if the string come from 
>> an external source. I'd strongly recommend figuring out a different 
>> approach to what you're doing, but it's hard to provide guidance without 
>> more context.
>>
>> On Thu, Oct 22, 2015 at 12:34 PM, Alex Ames  
>> wrote:
>>
>>> You could define your own feval:
>>>
>>> feval(fn_str, args...) = eval(parse(fn_str))(args...)
>>>
>>> This has the advantage of accepting anonymous functions and multiple 
>>> arguments if necessary:
>>> julia> feval("sin",5.0)
>>> -0.9589242746631385
>>>
>>> julia> fn_str = "a_plus_b(a,b) = a + b"
>>> "a_plus_b(a,b) = a + b"
>>>
>>> julia> feval(fn_str,2,3)
>>> 5
>>>
>>> On Thursday, October 22, 2015 at 8:20:33 AM UTC-5, J Luis wrote:

 Thanks, at least it's a place to start.

 quinta-feira, 22 de Outubro de 2015 às 14:10:44 UTC+1, Kristoffer 
 Carlsson escreveu:
>
> Maybe
>
> julia> eval(Symbol("sin"))(5.0)
> -0.9589242746631385
>
> Not sure if this is the best solution.
>
>
> On Thursday, October 22, 2015 at 2:57:31 PM UTC+2, J Luis wrote:
>>
>> Hi,
>>
>> I need to convert this piece of Matlab code
>>
>>   [ps, orig_path] = feval(str2func(test), out_path);
>>
>> where 'test' is the name of a function and 'out_path' it unique input 
>> argument. I have read and re-read the eval function and for once it's 
>> clear 
>> for me how it works (sorry, I find this sentence highly cryptic 
>> "Evaluate 
>> an expression in the given module and return the result" ) but worst, I 
>> don't see anywhere how it could call a function with input arguments.
>>
>> How can I achieve the same result in Julia?
>>  
>> Thanks. 
>>
>
>>

Re: [julia-users] Re: How to feval?

2015-10-22 Thread Stefan Karpinski
Julia doesn't identify functions and files the way Matlab does. You can
just load the file by name.

On Thu, Oct 22, 2015 at 2:56 PM, J Luis  wrote:

> Anyway, unfortunately none of the above solutions work for files. If the
> file is called "GMT_insert.jl", and is in the path, I get variations around
> (+ file extension - file extension) of
>
> ERROR: UndefVarError: GMT_insert not defined
>
>
>
> quinta-feira, 22 de Outubro de 2015 às 18:30:04 UTC+1, J Luis escreveu:
>>
>> Speed is not critical here. I am porting this script
>>
>>
>> http://gmt.soest.hawaii.edu/projects/gmt-matlab-octave-api/repository/changes/trunk/src/gmtest.m
>>
>> that will call the test scripts that live, as for example, here
>>
>>
>> http://gmt.soest.hawaii.edu/projects/gmt/repository/show/branches/5.2.0/doc/scripts/ml
>>
>> and compare the produced output with the reference PS file that is also
>> in the testing dirs.
>>
>> If it works, as I hope and will test later. It's good enough for me but
>> off course faster alternatives are always wellcome.
>>
>> Thanks
>>
>> quinta-feira, 22 de Outubro de 2015 às 18:16:05 UTC+1, Stefan Karpinski
>> escreveu:
>>>
>>> This will not be fast. It's also wildly insecure if the string come from
>>> an external source. I'd strongly recommend figuring out a different
>>> approach to what you're doing, but it's hard to provide guidance without
>>> more context.
>>>
>>> On Thu, Oct 22, 2015 at 12:34 PM, Alex Ames 
>>> wrote:
>>>
 You could define your own feval:

 feval(fn_str, args...) = eval(parse(fn_str))(args...)

 This has the advantage of accepting anonymous functions and multiple
 arguments if necessary:
 julia> feval("sin",5.0)
 -0.9589242746631385

 julia> fn_str = "a_plus_b(a,b) = a + b"
 "a_plus_b(a,b) = a + b"

 julia> feval(fn_str,2,3)
 5

 On Thursday, October 22, 2015 at 8:20:33 AM UTC-5, J Luis wrote:
>
> Thanks, at least it's a place to start.
>
> quinta-feira, 22 de Outubro de 2015 às 14:10:44 UTC+1, Kristoffer
> Carlsson escreveu:
>>
>> Maybe
>>
>> julia> eval(Symbol("sin"))(5.0)
>> -0.9589242746631385
>>
>> Not sure if this is the best solution.
>>
>>
>> On Thursday, October 22, 2015 at 2:57:31 PM UTC+2, J Luis wrote:
>>>
>>> Hi,
>>>
>>> I need to convert this piece of Matlab code
>>>
>>>   [ps, orig_path] = feval(str2func(test), out_path);
>>>
>>> where 'test' is the name of a function and 'out_path' it unique
>>> input argument. I have read and re-read the eval function and for once 
>>> it's
>>> clear for me how it works (sorry, I find this sentence highly cryptic "
>>> Evaluate an expression in the given module and return the result" )
>>> but worst, I don't see anywhere how it could call a function with input
>>> arguments.
>>>
>>> How can I achieve the same result in Julia?
>>>
>>> Thanks.
>>>
>>
>>>