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

--
Greg
_______________________________________________
cython-devel mailing list
cython-devel@python.org
http://mail.python.org/mailman/listinfo/cython-devel

Reply via email to