2009-12-20 52 views

回答

4

您可以使用运算符重载的类型/类:

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) 
13

见我回答这个问题:

Functions with generic parameter types

简述:

  • 可以重载类成员(但不会让绑定功能)
  • 您可以使用“内联”和“帽子”类型
  • 您可以模拟Haskell的类型类,并明确通过词典的的的方法
  • 您可以使用做'运行时间类型测试'铸造'obj'
相关问题