f# - 整理我的相互递归类型

标签 f# types mutual-recursion

是否可以在不同文件中分布相互递归类型([<Struct>])?这些类型直接在 namespace 下。

我的解决方案是将它们放在一个大文件中,并使用type ... and ... and ... etc构造。这是唯一的方法吗?

最佳答案

您可以使用一种称为“解开递归结”的技术,在此方法中,您可以一个参数化另一个参数。

所以这:

type a = B of b
and b = A of a

变成:
type 'b a = B of 'b
type b = A of b a

关于f# - 整理我的相互递归类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4308361/

相关文章:

c++ - 无法理解arduino示例代码的语法

c - 为什么 OCaml 中没有函数头?

coq - 产品类型的相互递归函数

syntax - F# 前向类型声明

f# - 如何定义 x++(其中 x : int ref) in F#?

f# - 使用 "fst"从元组中提取第一个元素抛出错误 "type mismatch"

使用 OperatorPrecedenceParser 使用 FParsec 解析函数应用程序?

visual-studio-2012 - 在 Visual Studio 2012 中使用 F# 的内联函数的代码覆盖率

haskell - Haskell 中 `==` 的类型应该是 `Eq a b => a -> b -> Bool`

string - 如何检查给定变量值是否为字符串类型