scala maneira de definir funções que aceitam uma lista de diferentes tipos numéricos

Eu tenho o seguinte problema: Eu tenho uma função que usa uma List [Double] como parâmetro, executa algumas operações aritméticas nos elementos da lista e depois retorna o resultado. Gostaria que a função também aceitas List [Int]. Aqui está um exemplo:

def f(l: List[Double]) = {
    var s = 0.0 
    for (i <- l)
        s += i
    s
}

val l1 = List(1.0, 2.0, 3.0)
val l2 = List(1, 2, 3)

println(f(l1))
println(f(l2))

É claro que o segundo println falha, pois f requer List [Double] e não List [Int].

Observe também a formulação no estilo não escala da soma dentro da função f, a fim de evidenciar a necessidade de usar 0 (ou outras constantes) dentro da própria função (se eu somar valores Int, tenho que iniciar s para 0 e não 0,0.

Qual é a melhor maneira (menos código) para que a função funcione no Double e no Int?

(Eu vi algo sobre 2.8 Característica numérica por não ter tanta certeza de como usá-lo ...)

Obrigado a todos pela ajuda.

questionAnswers(2)

yourAnswerToTheQuestion