On Sat, Nov 27, 2010 at 12:28 AM, Vitja Makarov <[email protected]> wrote:
> 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.
>

Wow, it's amazing how much can happen when you go away for a few days
of vacation. Thanks!

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

Reply via email to