내가 스칼라에서 GCD를 정의하기 위해 Y-콤비를 사용하기 위해 노력하고있어 일치하지 않습니다스칼라 (INT, INT) => 지능 (INT, INT) => Int 인
object Main {
def y[A,B](f : (A => B) => A => B) : A => B = f(y(f))
def gcd = y[(Int,Int),Int]((g) => (x,y) => if (x == 0) y else g(y % x, x))
}
하지만를 오류를 받고 있어요 :
def gcd = y[Int,Int => Int](g => x => y => if (x == 0) y else g(y % x)(x))
나는 uncurried 버전에서 잘못하고 있어요 무엇 : 나는 모든 인수 카레 경우
Main.scala:3: error: type mismatch;
found : (Int, Int) => Int
required: (Int, Int) => Int
def gcd = y[(Int,Int),Int]((g) => (x :Int,y :Int) => if (x == 0) y else g(y % x, x))
^
, 다음 아무 문제가 없다?
당신이 정의한 인수'y'와 'y'와 무슨 상관이 있습니까? –