Sorry for the noise... Yes, the caller does the typecheck for cdef
functions, so no danger at all...

>> Python is just not designed for it. If we try to use types to
>> "encourage
>> good programming practice" then we essentially need to develop a new
>> language from ground up, which may or may not look like Python.

I've NEVER said that using types is encourages good programming
practice... All as I commented if that if you write a cdef function
with a typed arg, and next call it with an untyped value, it would be
NICE that Cython let me know that... just because that WARNING could
spot a real bug, or I could even save the runtime typecheck at the
caller by using a typed value. And I just asked for a Cython warning,
and I do not ever bother if that warning is not enabled by default...

>From my own code, I have two primary use cases for cdef functions/methods:

(1) internal, private helper routines, that should handle C types and
cdef classes
(2) public C-API for consumption in external C code.

For (1), when I use typed arguments I have VERY good reasons for it,
and would like Cython to point me any call with untyped args (because
an untyped arg is either a bug or an unnecessary runtime typecheck in
the caller)...

For (2), the no-typecheck on the callee is unsafe, and I have to
manually do the typecheck....


>>
>> I even had a seperate slide in my SciPy 09 presentation telling people
>> that static type checking (as a programming model) was not a valid
>> usecase for Cython; "Cython is typed because it has to, not because it
>> wants to." :-)
>

I do not buy that as an absolute truth... If some people use Cython to
write/speedup Python code, then they will likely share that view...
But if you use Cython closer to the C/C++ part, where you have to
interact with C types and opaque handles, and typed cdef classes and
cdef methods, and all that for maximum speed and calling external lib
functions, then you start to think different and will appreciate if
Cython help you to save unnecessary runtime typechecking by some sort
or "static typing" features (even if all what Cython does is
generating warnings).



-- 
Lisandro Dalcín
---------------
Centro Internacional de Métodos Computacionales en Ingeniería (CIMEC)
Instituto de Desarrollo Tecnológico para la Industria Química (INTEC)
Consejo Nacional de Investigaciones Científicas y Técnicas (CONICET)
PTLC - Güemes 3450, (3000) Santa Fe, Argentina
Tel/Fax: +54-(0)342-451.1594
_______________________________________________
Cython-dev mailing list
[email protected]
http://codespeak.net/mailman/listinfo/cython-dev

Reply via email to