10得票1回答
组织我的相互递归类型

在不同的文件中,是否可以有互相递归的类型([<Struct>])? 这些类型直接位于命名空间下。 我的解决方案是将它们放入一个大文件中,然后使用 type ... and ... and ...等 的结构。这是唯一的方法吗?

9得票4回答
Python如何实现互相递归函数调用的查找?

假设我有两个函数在同一个 Python 文件中连续出现: def A(n): B(n-1) # if I add A(1) here, it gives me an error def B(n): if n <= 0: return else: ...

9得票2回答
为什么OCaml中互递模块需要签名要求?

在OCaml中使用相互递归的模块定义时,即使是在.ml文件中,也需要给出签名。这很麻烦,因为我还想从.mli中公开给定的接口,结果我不得不重复两次签名。:( module rec Client : sig type ('serv,'cli) t (* functions ... *...

8得票3回答
在F# / Scala中优化相互递归的标准方法是什么?

这些语言本身不支持相互递归函数的优化,所以我猜必须使用跳板或重写为循环。我错过了什么吗? 更新:似乎我在FSharp方面说谎了,但我只是在谷歌搜索时没有看到相互尾调用的示例。

7得票4回答
在Haskell互递归中获取列表元素的奇偶位置

我最近开始学习Haskell。 我在网上找到了一段代码,它返回列表中所有偶数/奇数位置的元素。 它利用了相互递归,但我似乎无法理解其内部工作原理。 evens (x:xs) = x:odds xs evens _ = [] odds (_:xs) = evens xs odds _ =...

7得票2回答
在C和Haskell之间互相递归时编译尾调用优化

我正在尝试使用Haskell中的外部函数接口。我想实现一个简单的测试,以查看是否可以进行相互递归。因此,我创建了以下Haskell代码: module MutualRecursion where import Data.Int foreign import ccall countdownC...

7得票4回答
相互递归的类

我该如何在C++中实现相互递归的类?就像这样: /* * Recursion.h * */ #ifndef RECURSION_H_ #define RECURSION_H_ class Class1 { Class2* Class2_ptr; public: void C...

7得票3回答
为什么OCaml中没有函数头?

在某些编程语言中,尤其是在C语言中,有带有函数声明的头文件。这些函数“头”位于代码之前,并且在存在相互递归的情况下是必需的。当将函数头放置在头文件中时,它们还可以帮助链接多个C文件一起编译的情况。 我对C文件中的函数头的理解是,它们有助于编译,因为如果在定义函数之前调用该函数,则它们定义了该...