当我提出F#似乎不支持Infinite Types时,我正在Twitter上与Sadek Drobi聊天.事实证明,在C#中你可以沿着这些方向做点什么:
delegate RecDelegate<T> RecDelegate<T>(T x);
Run Code Online (Sandbox Code Playgroud)
然而,经过对我们两个部分的一些实验,我们确定F#中的相同内容似乎不可能是隐式和显式的.
明确:
type 'a specialF = 'a->specialF<'a>
Run Code Online (Sandbox Code Playgroud)
错误FS0191:此类型定义涉及通过缩写,结构字段或继承关系的立即循环引用.
隐式:
let rec specialF (x: 'a) = specialF
Run Code Online (Sandbox Code Playgroud)
类型不匹配.期待'b但是给'a - >'b.在统一''b'和'' - >'b'时,结果类型将是无限的.
当然,这些是故意简单的样品.
我想知道我是不是错了.也许我错过了某种必要的注释?