是否有可能在F#中执行函数重载?
问题描述:
答
您可以使用运算符重载的类型/类:
type Fraction =
{ n : int; d : int; }
static member (+) (f1 : Fraction, f2 : Fraction) =
{ n = f1.n * f2.d + f2.n * f1.d; d = f1.d * f2.d }
或内联函数:
> let inline fi a b = a+b;;
val inline fi :
^a -> ^b -> ^c when (^a or ^b) : (static member (+) : ^a * ^b -> ^c)
答
见我回答这个问题:
Functions with generic parameter types
简述:
- 可以重载类成员(但不会让绑定功能)
- 您可以使用“内联”和“帽子”类型
- 您可以模拟Haskell的类型类,并明确通过词典的的的方法
- 您可以使用做'运行时间类型测试'铸造'obj'