繁体   English   中英

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

[英]How can I define a recursive function type in scala?

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

type RFcn: () => RFcn

但我无法找到一种语法来让它发挥作用。 有谁知道如何做到这一点?

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

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

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

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

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

Sarvesh的回答在我脑海中引发了一些让我想要的东西。 这很简单:

abstract class RFcn extends Function0[RFcn]

这就是我试图表达的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM