「Intermediate Perl」を試していますが、かなりクールです。「The Schwartzian Transform」のセクションを終えたところですが、それが沈んだ後、なぜ変換がキャッシュを使用しないのか疑問に思い始めました。いくつかの繰り返し値を持つリストでは、変換によってそれぞれの値が再計算されるため、結果をキャッシュするためにハッシュを使用しない理由を考えました。ここにいくつかのコードがあります:
# a place to keep our results
my %cache;
# the transformation we are interested in
sub foo {
# expensive operations
}
# some data
my @unsorted_list = ....;
# sorting with the help of the cache
my @sorted_list = sort {
($cache{$a} //= &foo($a)) <=> ($cache{$b} //= &foo($b))
} @unsorted_list;
何か不足していますか?Schwartzian 変換のキャッシュ バージョンが本にリストされていないのはなぜですか?
編集: daxim は、これは orcish操作として知られているコメントで指摘しました。だから、名前はよくわからないけど、頭がおかしくなったわけじゃない。