On Tue, May 3, 2011 at 4:40 PM, Greg Ewing <greg.ew...@canterbury.ac.nz> wrote: > Dag Sverre Seljebotn wrote: > >> ctypedef fused_type(float, double) speed_t >> ctypedef fused_type(float, double) acceleration_t >> >> then you get 4 specializations. >> >> ctypedef speed_t acceleration_t >> >> I guess only 2 specializations. >> >> Treating the typedefs in this way is slightly fishy of course. > > Indeed. This whole business seems rather too implicit to > me. I think I'd rather have explicit type parameters in > some form. Maybe > > cdef func2[floating F](F x, F y): > # 2 specialisations > > cdef func4[floating F, floating G](F x, G y): > # 4 specialisations > > This also makes it clear how to refer to particular > specialisations: func2[float] or func4[float, double]. > > Pointers are handled in a natural way: > > cdef funcfp[floating F](F x, F *y): > # 2 specialisations > > It also extends naturally to fused types used in other > contexts: > > cdef struct Vector[floating F]: > F x, y, z
That's an idea, it is nice and explicit without being too verbose. Any thoughts on how one would define one's own "floating?" I presume one then use a Vector[F] inside of func2[floating F]? - Robert _______________________________________________ cython-devel mailing list cython-devel@python.org http://mail.python.org/mailman/listinfo/cython-devel