如何在scala中定义递归函数类型?

时间:2016-10-05 01:16:59

标签: scala function recursion types

我想在scala中定义一个类似的函数类型:

type RFcn: () => RFcn

但是我无法找到一种语法来让它发挥作用。有谁知道怎么做?

2 个答案:

答案 0 :(得分:0)

嗯......问题是recursive function不应该返回function。这个type RFcn = () => RFcn看起来不像递归函数。所以你的问题似乎受到了对递归函数的一些误解的启发,并且有点无效。

这个type RFcn = () => RFcn看起来更像是一种天真的尝试,用于实现代表potential Bottom中某个步骤的状态(读作潜在的无限计算)。如果这就是您的目标,那么您可以相应地更改您的问题,并且State monad可能对您有用。

不要让我们得到可以回答的部分。在Scala中,函数是Function1Function2等的实际实例。所以如果你想要一个代表一个函数的函数,你可以写成如下,

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]

这就是我试图表达的内容。