2016-10-05 54 views

回答

0

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

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

不让让我们来回答一下。在Scala中,funtions是实际上可以的Function1情况下,Function2 ...等,所以,如果你想有一个类型的代表单元的功能功能,您可以编写如下,

type UnitToFunc1[P1, R] =() => Function1[P1, R] 

type UnitToFunc2[P1, P2, R] =() => Function2[P1, P2, R] 
+0

这是我想递归的类型,而不是函数。阅读标题为“递归(函数类型)”,而不是“(递归函数)类型”。这不是我需要它返回一个函数,而是我希望它返回一个函数,该函数返回一个返回函数的函数.... –

+0

这正是我想告诉你的......我想你想要实现潜在的底部。你不能直接代表任何完整语言的底部(而斯卡拉就是其中之一),因此人们会用潜在底部来逼近它们。国家monad可以用来实现潜在的底部。 –

+1

现在你可能会问我潜在的底部是什么意思 - 潜在的底部或潜在的无限计算是在任何给定时间无限计算的状态。这里要注意的重要一点是,尽管无限计算的最终结果无法表示,但您可以在任何给定时间表示其中间状态。然后,将其用作持续状态的懒惰生成器。 –

0

Sarvesh的回答引发东西我的想法给了我想要的东西。这很简单:

abstract class RFcn extends Function0[RFcn] 

这就是我想表达的。