当我被提起F#似乎不支持Infinite Types时,我在Twitter上与Sadek Drobi聊天。事实证明,在C#中,您可以按照以下方式进行操作:
delegate RecDelegate<T> RecDelegate<T>(T x);
但是,在我们对这两个部分进行了一些试验之后,我们确定F#中的隐式和显式都似乎不可能。
明确:
type 'a specialF = 'a->specialF<'a>
隐式:
let rec specialF (x: 'a) = specialF
当然,这些是有意的简单示例。
我想知道我是否误会了。也许我错过了某种类型的必要注释?
最佳答案
您也可以做类似的事情
type 'a RecType = RecType of ('a -> 'a RecType)
创建通过其执行递归的命名类型。现在这有效:
let rec specialF = RecType (fun _ -> specialF)
关于f# - F#中不可能使用无限类型(又称为递归类型)吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1228644/