         (using the NumericType protocol as a generic constraint, and call 
         it with any numeric type we like for instance, Double, Float, Int, etc.)
 */
-prefix func ∑<T: NumericType>(input : Slice<T>) -> T
+prefix func ∑<T: NumericType>(input : ArraySlice<T>) -> T
 {
     return sumOf(input)
 }

        generic constraint, and call it with any numeric type we like for instance,
        Double, Float, Int, etc.))
*/
func sumOf<T: NumericType>(input : Slice<T>) -> T
{
    return sumOf([] + input)
}

        (using the NumericType protocol as a generic constraint, and call
        it with any numeric type we like for instance, Double, Float, Int, etc.)
*/
prefix func ∏<T: NumericType>(input : ArraySlice<T>) -> T
{
    return productOf(input)
}
