Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 无限函数咖喱?_Scala - Fatal编程技术网

Scala 无限函数咖喱?

Scala 无限函数咖喱?,scala,Scala,我尝试在scala中执行以下操作: def addPoints(x1: Int, y1: Int)(x2: Int, y2: Int)(x3: Int, y3: Int) = { doSomethingWith(x1, y1, x2, y2, x3, y3) (addPoints _) } 然而,我正在努力弄清楚这个函数的返回类型应该是什么,因为似乎不可能定义无限递归函数类型。我希望能够做到以下几点: type RecursiveFunction2[A, B] = (A, B) =&g

我尝试在scala中执行以下操作:

def addPoints(x1: Int, y1: Int)(x2: Int, y2: Int)(x3: Int, y3: Int) = {
  doSomethingWith(x1, y1, x2, y2, x3, y3)
  (addPoints _)
}
然而,我正在努力弄清楚这个函数的返回类型应该是什么,因为似乎不可能定义无限递归函数类型。我希望能够做到以下几点:

type RecursiveFunction2[A, B] = (A, B) => RecursiveFunction2[A, B]

var pointAdder: RecursiveFunction2[Int, Int] = (addPoints _)

def onEvent(x: Int, y: Int) {
  pointAdder = pointAdder(x, y)
}

但是,类型不能引用自己。有没有办法在不使用返回类型
any
和调用
asInstanceOf[Function2[Int,Int,any]
的情况下实现这一点?

你能对你想要的
addPoints
doSomethingwith
做什么以及为什么函数需要“无限递归”做更多评论吗,基本上我有0-∞ x、 将通过事件驱动接口输入的y坐标对。每第三盘,我就需要做一些有副作用的事情。有很多方法可以实现它,但是用curry来实现它似乎很有趣,因为只要我可以继续调用curry函数,它就会无限工作。让它自己返回将允许我始终拥有(Int,Int)=>函数2的签名。如何将该行为建模为
流上的
折叠
?我对
流只稍微熟悉一点,您能演示一下它的外观吗?