読者です 読者をやめる 読者になる 読者になる

とくにあぶなくないRiSKのブログ

危ないRiSKのブログだったかもしれない。本当はRiSKだけどググラビリティとか取得できるIDの都合でsscriskも使ったり。

小分けの処理とまとめた処理をまとめたい

JavaScript限定ではない、もっと一般的な話。
文字列を出力する方法は大きく分けて2通りあると思います。

  • 小分けに出力する
  • 文字列を(メモリの上で)連結して、一度に出力する

JavaScriptで具体的なコードを挙げると…

function write_each(a, b) {
  document.write(a);
  document.write(b);
}
function write_collected(a, b) {
  document.write(a + b);
}

この二つをうまくまとめられないものでしょうか?
これは文字列の出力に限った話では無くて、抽象化するとこんな感じ。

function do_each(array, f) {
  array.forEach(function(value){
    f(value);
  });
}
function do_collected(array, f, op) {
  f(array.reduce(function(prev, current){
    return op(prev, current);
  }));
}

do_each(['a', 'b'], function(s){document.write(s);});
do_collected(['a', 'b'], function(s){document.write(s)}, function(a, b){return a + b;});

最終的に、時間の経過と op の作用の効果が同じならば合わせられるような気がするんだけど。
うーん。うまく言語化できないんだけど、誰か分かってくれる人がいたらうれしい。

まとめたい

「まとめたい」という表現がいまいちなんだけど、もう一段抽象化できるんじゃないか、ケースに合わせてどちらかのパターンに切り替えられるインターフェースを作れるんじゃないか、とか考えてます。

追記

トラックバックいただきました。

Re:小分けの処理とまとめた処理をまとめたい - ろじかるんるんものがたり

要は文字列という半群を構造を保ちつつ処理君にして畳みこむか、文字列を畳み込んで処理君にするかの違いみたいな。

半群」がよく分からないけど、そんな感じ。

ツイートいただきました。


いまだもやもやしてるあたり、ちゃんと分かってない感がすごいけどあまり意味がないそうな。レベルアップしてすっきり分かるようになりたいものです。