Take a concrete method for instance,
def df(f: Float => Float, dt: Float) = (t: Float) => f(t + dt) - f(t)
It can be compiled and works. However, when I tried to define it in a generic way,
def df[T](f: T => T, dt: T) = (t: T) => f(t + dt) - f(t)
The compiler said,
"error: type mismatch; found : T;required: String def df[T](f: T => T, dt: T) = (t: T) => f(t + dt) - f(t)".
It seemed like the type T couldn't be added. Then I tried another way,
def df[T <: Double](f: T => T, dt: T) = (t: T) => f(t + dt) - f(t)
Again It failed,
scala> def df[T <: Double](f: T => T, dt: T) = (t: T) => f(t + dt) - f(t)
<console>:7: error: type mismatch;
found : Double
required: T
def df[T <: Double](f: T => T, dt: T) = (t: T) => f(t + dt) - f(t)
^
Now All my tricks have been exhausted.
How can I make it?