私はscalaを初めて使用するので、この基本的な初心者の質問を許してください。次のコードスニペットがあります。
type Pred[A, B] = (A, B) => Int;
def abs[A, B](p: (A, B) => Int): (A, B) => Int =
(a, b) => if (p(a, b) < 0) -(p(a, b)) else (p(a, b));
def multiply(a: Int, b: Int): Int =
a * b;
def subtract(a: Int, b: Int): Int =
a - b;
val absMultiply = abs(multiply);
val absSubstract = abs(subtract);
println("abs(10 * 10) = " + absMultiply.apply(10, 10));
println("abs(10 - 100) = " + absSubstract.apply(10, 100));
したがって、私はそれを正しく理解しているので、(A、B)=> IntをPred[A、B]に置き換えることができるはずです。
def abs[A, B](p: Pred[A, B]): Pred[A, B] =
(a, b) => if (p(a, b) < 0) -(p(a, b)) else (p(a, b));
しかし、コンパイラの例外が発生します
type mismatch; found : (Int, Int) => Int required: (A, B) => Int
type mismatch; found : (Int, Int) => Int required: (A, B) => Int
私はここで何か間違っていると誤解しましたか?
ご助力ありがとうございます。
キリル