I agree, John.  It would be better to define a .sum() method on the
generic vector class, which calls the global sum().  Then, it'll be
overridden by various classes which can do it faster.

On Sat, Nov 13, 2010 at 6:15 AM, John Cremona <john.crem...@gmail.com> wrote:
> I'm not sure I agree with this.  I would expect the global sum() to
> try to use a sum method first, and only do the default if that did not
> exist, since some classes might have better ways of summing themselves
> than the default.  But then the only reason for having sum methods
> would be if there was such a more efficient way of summing.  The
> present situation is still bad, though, as it is inconsistent.
>
> I am (of course) open to persuasion!
>
> John
>
> On Sat, Nov 13, 2010 at 5:18 AM, Dima Pasechnik <dimp...@gmail.com> wrote:
>> I don't think sum() method is needed. It's certainly a code bloat.
>> Could you check that sum() in vector_double_dense can be removed?
>> (remove it there, do sage -b, run testsuite, see if there were any
>> errors caused by it)
>>
>> On Nov 13, 12:59 pm, Maxim <maxim.courno...@gmail.com> wrote:
>>> If I try to find the sum of a vector of floats that way, it works as
>>> expected:
>>> sage: vector([1,float(2),3]).sum()
>>> -> 6.0
>>>
>>> However, applying the same logic on a vector made of integers:
>>> sage: vector([1,2,3]).sum()
>>> -> Traceback (click to the left of this block for traceback)
>>>     ...
>>>     AttributeError:
>>> 'sage.modules.vector_integer_dense.Vector_integer_dense'
>>>     object has no attribute 'sum'
>>>
>>> Workaround (thanks to Dr. Drake) is to call the sum function directly
>>> like this:
>>> sage: sum(vector([1,2,3]))
>>> -> 6
>>>
>>> Browsing through the code, one can find the .sum() method being
>>> defined for floats at the end of the file vector_double_dense.pyx,
>>> while this method is absent in the vector_integer_dense.pyx.
>>>
>>> Did I luckily stumbled on a rarity, or should this self.sum() method
>>> be part of every types' definition? (where applicable). in any case,
>>> uniformity would help (method present in every type definition /
>>> completely removed) to prevent confusion.
>>
>> --
>> To post to this group, send an email to sage-devel@googlegroups.com
>> To unsubscribe from this group, send an email to 
>> sage-devel+unsubscr...@googlegroups.com
>> For more options, visit this group at 
>> http://groups.google.com/group/sage-devel
>> URL: http://www.sagemath.org
>>
>
> --
> To post to this group, send an email to sage-devel@googlegroups.com
> To unsubscribe from this group, send an email to 
> sage-devel+unsubscr...@googlegroups.com
> For more options, visit this group at 
> http://groups.google.com/group/sage-devel
> URL: http://www.sagemath.org
>

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

Reply via email to