ジェネリックな機能
ジェネリックな関数の表記法
以下はどちらでも同じ意味になります。
ジェネリックな関数の表記
type 'a list = ...
type list<'a> = ...
Generic Comparison
F#の論理演算子(=,<,<=,>,>=)とmin,max,compare関数は
賢い比較を行います。
再帰的な比較
//タプルは左から右に再帰的に比較してくれる
("abc","def") < ("abc","xyz");;
compare (10,30) (10,20);;
これらの比較は、IComparableインタフェースを実装することで、
ユーザも制御することが出来ます。
Generic Hashing
F#にはハッシュ値を計算するための関数hashがあります。
Generic Comparisonと同様に、
タプルやリストなどを用いた複合的な型に対して
再帰的にハッシュ値を計算してくれます。
hash関数
hash 100 |> printfn "%d"
hash "abc" |> printfn "%d";;
Generic Pretty Print
以下に紹介するprintf系関数の%Aという書式は
任意の複合的な型に対してpretty printを行うのに
利用することができます。
覚えておくと便利です。
PrettyPrintを行う関数
let pp = sprintf "result = %A" ([1],[true])
printfn "%s" pp
printfn "%A" [(1,"a");(2,"b")]