         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
+func sumOf<T: NumericType>(input : ArraySlice<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 : Slice<T>) -> T
{
    return productOf(input)
}

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