假设我在 F# 中定义了以下两种类型:
type Dog = { DogName:string; Age:int }
type Cat = { CatName:string; Age:int }
我期待以下方法适用于猫和狗:
let isOld x = x.Age >= 65
实际上,似乎发生的事情是isOld
只接受猫:
let dog = { DogName = "Jackie"; Age = 4 }
let cat = { CatName = "Micky"; Age = 80 }
let isDogOld = isOld dog //error
我希望 F# 足够聪明,可以X
为猫和狗定义某种“虚拟”接口,以便isOld
接受 X 作为参数,而不是Cat
.
这不是 F# 在任何情况下都可以处理的事情,对吗?似乎 F# 类型推断系统不会做比 C# 对var
类型变量所做的更多的事情。