F# 类型推断:函数与类型

F# 类型推断:函数与类型,f#,F#,我正在学习F#,我不明白类型推理和泛型在这种语言中是如何工作的。例如,我可以声明一个通用的min函数,并将其与不同类型的参数一起使用: let min a b = if a < b then a else b let smallestInt = min 3 5 let smallestFloat = min 3.0 5.0 因此,我有几个问题: 为什么我可以对不同的类型重复使用泛型函数定义,而不是类型定义 该函数在运行时是否像C#泛型那样专门针对每种类型?还是在编译时像C++模板?或

我正在学习F#,我不明白类型推理和泛型在这种语言中是如何工作的。例如,我可以声明一个通用的min函数,并将其与不同类型的参数一起使用:

let min a b = if a < b then a else b

let smallestInt = min 3 5
let smallestFloat = min 3.0 5.0
因此,我有几个问题:

  • 为什么我可以对不同的类型重复使用泛型函数定义,而不是类型定义
  • 该函数在运行时是否像C#泛型那样专门针对每种类型?还是在编译时像C++模板?或者说,拳击是为了将每个论点都视为可比的吗

谢谢。

类需要显式类型参数。这项工作:

type Point2D<'T>(x:'T, y:'T) = 
    member this.X = x
    member this.Y = y

let float32Point = Point2D(0.0f, 1.0f)
let intPoint = Point2D(0, 1)
键入Point2D'a->'a(需要比较)
比较
约束仅在编译时存在(运行时签名相同,减去约束)


这就是所谓的。@svick自动泛化意味着推断一般类型,但这里要做的不止这些。
type Point2D<'T>(x:'T, y:'T) = 
    member this.X = x
    member this.Y = y

let float32Point = Point2D(0.0f, 1.0f)
let intPoint = Point2D(0, 1)