2009-12-20 56 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'
相關問題