我想在scala中定义一个类似的函数类型:
type RFcn: () => RFcn
但是我无法找到一种语法来让它发挥作用。有谁知道怎么做?
答案 0 :(得分:0)
嗯......问题是recursive function
不应该返回function
。这个type RFcn = () => RFcn
看起来不像递归函数。所以你的问题似乎受到了对递归函数的一些误解的启发,并且有点无效。
这个type RFcn = () => RFcn
看起来更像是一种天真的尝试,用于实现代表potential Bottom
中某个步骤的状态(读作潜在的无限计算)。如果这就是您的目标,那么您可以相应地更改您的问题,并且State monad
可能对您有用。
不要让我们得到可以回答的部分。在Scala中,函数是Function1
,Function2
等的实际实例。所以如果你想要一个代表一个函数的函数,你可以写成如下,
type UnitToFunc1[P1, R] = () => Function1[P1, R]
type UnitToFunc2[P1, P2, R] = () => Function2[P1, P2, R]
答案 1 :(得分:0)
Sarvesh的回答在我的脑海中引发了一些让我想要的东西。这非常简单:
abstract class RFcn extends Function0[RFcn]
这就是我试图表达的内容。