# routine sum

1 | class List |

1.1 | (List) routine sum |

2 | class Range |

2.1 | (Range) method sum |

3 | class Any |

3.1 | (Any) method sum |

Documentation for routine `sum`

assembled from the following types:

# class List

From List

## (List) routine sum

Defined as:

sub sum( --> Numeric)method sum(List: --> Numeric)

Returns the sum of all elements in the list or 0 if the list is empty. Throws an exception if an element can not be coerced into Numeric.

say (1, 3, pi).sum; # OUTPUT: «7.14159265358979»say (1, "0xff").sum; # OUTPUT: «256»say sum(0b1111, 5); # OUTPUT: «20»

When being called on native integer arrays, it is also possible to specify a `:wrap`

named parameter. This will add the values as native integers, wrapping around if they exceed the size of a native integer. If you are sure you will not exceed that value, or if you don't mind, using `:wrap`

will make the calculation about 20x as fast.

my int = ^1_000_000;say .sum(:wrap); # OUTPUT: «499999500000»

# class Range

From Range

## (Range) method sum

multi method sum(--> Numeric)

Returns the sum of all elements in the Range. Throws X::Str::Numeric if an element can not be coerced into Numeric.

(1..10).sum # 55

# class Any

From Any

## (Any) method sum

Defined as:

method sum() is nodal

If the content is iterable, it returns the sum of the values after pulling them one by one.

(3,2,1).sum; # OUTPUT: «6»say 3.sum; # OUTPUT: «3»

It will fail if any of the elements cannot be converted to a number.