相关疑难解决方法(0)

F#中无法使用无限类型(也就是递归类型)吗?

当我提出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'时,结果类型将是无限的.

当然,这些是故意简单的样品.

我想知道我是不是错了.也许我错过了某种必要的注释?

f# types type-inference

12
推荐指数
2
解决办法
1709
查看次数

标签 统计

f# ×1

type-inference ×1

types ×1