比較関数の自然な例
ソートで使用する比較関数のうまい例がみつからない。
列 { Xn } をソートするのに、関数 f でマップした f(Xn) の大小関係で比較することは良くあり、そのときの比較関数は [ ] ( auto a, auto b) { return f(a) < f(b); } という内容のものになるだろう。
VBAHaskellで実装している関数は配列を直接ソートするのではなくて、ソートインデックスを出力するものだ。それならば列 { f(Xn) } を作って、デフォルトの大小関係でソートすればいいことになるし、関数 f の呼び出し回数を考慮するとその方が速度は上かもしれない。このままでは比較関数を受け取る sortIndex_pred 関数の存在意義が説得力のないものになってしまう。
あらかじめ { f(Xn) } を作っておくのが難しい(またはすごく面倒な)例はないだろうか?あれば比較関数をとる sortIndex_pred の意義をより有効に表現できるのだ。