2009-12-20 12 views

risposta

4

È possibile utilizzare l'overloading degli operatori per i tipi/classi:

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 } 

o funzioni inline:

> let inline fi a b = a+b;; 
val inline fi : 
    ^a -> ^b -> ^c when (^a or ^b) : (static member (+) : ^a * ^b -> ^c) 
13

Vedere la mia risposta a questa domanda:

Functions with generic parameter types

In breve:

  • È possibile sovraccaricare i membri di una classe (ma non let-bound funzioni)
  • È possibile utilizzare 'inline' e il tipo 'cappello'
  • È possibile simulare le classi di tipo Haskell ed esplicitamente passare dizionari-of-metodi
  • È possibile utilizzare le prove di tipo runtime eseguite da "obj"
Problemi correlati