シュワルツ変換
いくつかの Perl 以外のプログラミング言語は、シュワルツ変換(DSU)と同等の最適化のためのインタフェースを提供している。
一般のシュワルツ変換は以下である:
ここで foo($_) は $_(リスト要素)を順番に受け取り、リスト要素の代わりに比較に使う値を与える式を表す。
上記コードは右から左へ(あるいは下から上へ)順に:
ソート元のリスト @unsorted は map 操作へ渡され、各要素は自分自身とソート順を決定する値(キー)からなる配列にラップされる(結果は [元要素, キー] の未ソートのリスト)
map されたリストを sort に渡し、直前に計算したキー基づいてソートする(結果は [元要素, キー] のソート済みリスト)
最後に map でリスト内の配列から目的の要素を取り出し、元リストのソート結果を得る(結果は元要素のソート済みリスト)
最初の map 操作でリスト要素と対応するキーを無名配列に持たせているが、Perl においてこれらの無名配列は、ソート処理が完了した直後にガベージコレクタが呼び出されることが保証されている。