typeで型に別名を付ける
type使えば型に別名付けれるのか。C++のtypedefっぽい。
以下は、float*floatなタプルを例に、そのデータ型に対する+演算子をオーバーロードしてベクトルの和を計算させてみるって簡単な話。
> type Vector2D<'a> = 'a*'a;; type Vector2D<'a> = 'a * 'a > let x:Vector2D<float> = 3.0, 5.0;; val x : Vector2D<float> = (3.0, 5.0) > let (+) (lhs:Vector2D<float>) (rhs:Vector2D<float>) = (fst lhs)+(fst rhs), (snd lhs)+(snd rhs);; val ( + ) : float * float -> float * float -> float * float > let a:Vector2D<float> = 1.0, 3.0;; val a : Vector2D<float> = (1.0, 3.0) > let b:Vector2D<float> = 2.0, 4.0;; val b : Vector2D<float> = (2.0, 4.0) > a + b;; val it : float * float = (3.0, 7.0)