Thanks. Initially I wanted to avoid having to use @anon because I wanted to 
be able to avoid having to use the special syntax of 

function ptest5{pfun}(::Type{pfun})

However, what I hadn't realized is that the @anon functions do actually 
still work with the standard syntax. That is, 

#function ptest5{pfun}(::Type{pfun})
function ptest5(pfun)

both work correctly, it's just the commented out one runs about 4 times 
faster.

I'd still prefer to be able to do it without @anon, but this should work 
fine. If I need something different, maybe I will get around to learning 
metaprogramming.


On Monday, June 22, 2015 at 5:48:29 PM UTC-4, Tim Holy wrote:
>
> It's just 
>
> foo = @anon (consump, labor) -> 
>     consump.^(1-sigmac)/(1-sigmac) + psi*(1-labor).^(1-sigmaI)/(1-sigmaI) 
>
> --Tim 
>
> On Monday, June 22, 2015 02:25:27 PM Andrew wrote: 
> > I hope this is an easy question, but I'm stuck. I want to define this 
> > function 
> > function u(consump,labor) 
> >     consump.^(1-sigmac)/(1-sigmac) + 
> psi*(1-labor).^(1-sigmal)/(1-sigmal) 
> > end 
> > 
> > but I don't want to have to pass the parameters explicitly. They are 
> never 
> > going to change after the function is defined, so I would like it if I 
> > could build them directly into the function as constants. 
> > 
> > The problem is that I plan to stick this function into a type, like so 
> > 
> > immutable UtilityFunction 
> >     u::Function 
> >     sigmac::Float64 
> >     sigmal::Float64 
> >     psi::Float64 
> > end 
> > 
> > I am unaware of any method in which u::Function could self-reference the 
> > elements of its type, which would be convenient, but I feel like I 
> should 
> > be able to define u::Function with the parameters built in. I admit I 
> don't 
> > really understand the scoping rules for functions which are contained in 
> a 
> > type. Were I defining u as an external function, I think it would have 
> > access to the variables in the global scope, so I could just define 
> > constants there and this would be fine. Since I'm trying to stick it in 
> a 
> > type, I don't know. 
> > 
> > As an aside, I plan to optionally use this function with the 
> FastAnonymous 
> > package. In that case it looks like this shouldn't be an issue, since 
> > according to its documentation, "The value of any parameters gets 
> "frozen 
> > in" at the time of construction." That's exactly what I'm looking for 
> here. 
> > 
> > I am pretty sure this could be done with a macro in the type's 
> constructor, 
> > but I'm hoping there's a simpler option. 
>
>

Reply via email to