Le Fri, Feb 26, 2021 at 01:32:34PM +1300, Greg Ewing a écrit : > On 26/02/21 9:29 am, Celelibi wrote: > > Maybe in the future if cython > > support compiling closures to C? > > Your "twice" example already needs some closure functionality. Yes, at the python level only. That's precisely the point.
> It relies on being able to manufacture a cdef function inside > a Python function, with the expectation that it will have > access to arguments of the Python function. With all or some > of that happening at compile time rather than run time. I'm > having trouble imagining how it would be implemented. It relies on creating a python object representing the inner cdef function during the compile-time execution. Which is, like, the trivial part. Just picture the `twice` example being converted like this for the compile-time execution. def twice(f): fun = CdefFunction(... use f ...) return fun foo = CdefFunction(...) ast.append(AstCdefFunction("foo", twice(foo))) Where CdefFunction is not necessarily callable. It's just a class representing a cdef function. And AstCdefFunction is an AST node representing a cdef function definition. Does that seem far fetched to you? I think this might even be doable without having to even detect the closure in cython. We'd just have to let python perform the name lookup. Celelibi _______________________________________________ cython-devel mailing list cython-devel@python.org https://mail.python.org/mailman/listinfo/cython-devel