具体的な方法を例にとると、
def df(f: Float => Float, dt: Float) = (t: Float) => f(t + dt) - f(t)
コンパイルして動作させることができます。しかし、一般的な方法で定義しようとすると、
def df[T](f: T => T, dt: T) = (t: T) => f(t + dt) - f(t)
コンパイラは言った、
「エラー: タイプの不一致; 検出: T;必須: 文字列 def df[T](f: T => T, dt: T) = (t: T) => f(t + dt) - f(t)」 .
タイプ T を追加できなかったようです。それから私は別の方法を試しました、
def df[T <: Double](f: T => T, dt: T) = (t: T) => f(t + dt) - f(t)
またもや失敗、
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)
^
これですべてのトリックが使い果たされました。
どうすれば作れますか?