One more quick thought.  The first sentence of the Cython tutorial 
(chapter two of the manual):

The fundamental nature of Cython can be summed up as follows: Cython is 
Python with C data types.

I understand there are thorny corner-cases and even common cases where 
it's best to break with Python semantics.  This may be one of them.  But 
I remembered this sentence in the shower this morning as I was trying to 
figure out why I so strongly expected Python semantics on operators.  I 
suppose this is more personal reflection, though, since I'm fine if it 
remains C semantics -- as long as it is clearly documented.  Perhaps a 
Wiki page, FAQ entry, and/or manual entry of differences between Cython 
and Python.

Thanks!

- Ryan

Ryan Hinton wrote:
> Robert,
> 
> Since I hit the problem I'm motivated to chime in.  I also followed the 
> email trail on the cython list.
> 
> Quick summary:
> 
> [X] Let the programmer decide, with
> [X'] Get 4 as the default
> 
> There are obviously some cases where speed is paramount and others where 
> Python compatibility is paramount, so it would be nice to choose. 
> Echoing the cython list, I also prefer in-code directives over compiler 
> options (though the two need not be mutually exclusive -- just a matter 
> of development time).
> 
> But given the ability to choose, you still need a "default": which 
> semantics are operative without any compiler options or pragmas.  Even 
> though I "grew up" writing C, I came to Cython gradually from Python 
> code, making small changes to see what speed-ups I could get.  So I 
> assumed Python semantics were operative.  Besides my use case and 
> personal preference, I think it's more pleasant to add a pragma from a 
> wiki page of optimizations than to get really frustrated debugging 
> because you made one little change and now your code segfaults (my 
> experience).
> 
> Thanks for working on this!
> 
> - Ryan
> 
> Robert Bradshaw wrote:
>> Here's a quick poll.
>>
>> In Python, if I write "-1 % 5", I get 4. This is how we do it in Sage  
>> as well (and I think it's the right way--that's not what I'm trying  
>> to ask). However, in C if I write "-1 % 5" I get -1. The question is,  
>> what should I get in Cython if I write (a % b) where a and b are cdef  
>> ints? Should I
>>
>> [ ] Get 4, because it should behave just like in Python, even though  
>> it will require extra logic and be a bit slower
>>
>> [ ] Get -1, because they're C ints, and besides we wouldn't be using  
>> Cython if we didn't care about performance
>>
>> [ ] Let the programmer decide (e.g. using http://wiki.cython.org/ 
>> enhancements/compilerdirectives ) recognizing that % will mean  
>> different things in different contexts.
>>
>> - Robert
>>
>>
> 
> > 

--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to 
sage-devel-unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to