2010/11/27 Vitja Makarov <[email protected]>:
> 2010/11/27 Stefan Behnel <[email protected]>:
>> Hi,
>>
>> please start a new thread when switching to a new topic.
>>
>> Vitja Makarov, 27.11.2010 08:24:
>>> I'm now trying to make "module scope lambda" work.
>>> That's almost done.
>>>
>>> I see that needs_assignment_synthesis() should be forced to create
>>> PyMethodDef struct.
>>
>> I would be happier if we could get rid of PyMethodDef in the long term, but
>> it's clearly easier to keep it for now.
>>
>>
>>> Now I do it this way:
>>> def needs_assignment_synthesis(self, ...):
>>> .....
>>>               if self.name == '<lambda>':
>>> .....
>>>
>>> Seems like a dirty hack.
>>
>> Yes. Instead, use a new flag "is_lambda" on the entry.
>>
>
> This check is performed in DefNode so I prefer to call it
> force_assignment_synthesis it could be used later for module level
> functions.
>
> Or do you mean that "is_lambda" should be set after
> declare_lambda_function() and then checked in DefNode?
>
>>
>>> Also lambda function is defined in module methods table as
>>> __pyx_lambda_funcdef4lala_lambda1,
>>> Is it safe not to add lambda cname to pyfunc_entries in
>>> Scope.declare_lambda_function()?
>>
>> I don't know, you can try. In any case, it needs to do everything that a
>> normal Python function does, except for adding its Python name to the
>> defining scope. That's a rather small distinction.
>>
>> Stefan
>
> Seems to work fine. No regressions.
>
> --
> vitja.
>

I've attached patch to ticket #308, not sure right place for it.
Btw lambda at module scope gives +29 points in pyregr.

-- 
vitja.
_______________________________________________
Cython-dev mailing list
[email protected]
http://codespeak.net/mailman/listinfo/cython-dev

Reply via email to