【发布时间】:2021-02-23 04:23:39
【问题描述】:
由于值限制问题,以下 F# 代码无法编译:
let x = List.rev []
但这编译:
let x = List.rev [] in 3::x
据我了解,编译器推断 x 必须是 int list 类型,因此无法编译。
以下内容无法编译:
let x = List.rev [] in (3::x, true::x)
但这确实:
let x = ([]) in (3::x, true::x)
为什么?
【问题讨论】:
-
类型推断可以在任何方向上传播。对于
List.rev : 'a list -> 'a list,没有可以同时满足int和bool的'a类型。
标签: f#