アカウント名:
パスワード:
群や環といった代数系について勉強しましょう。
これらの系では一般に、可換と限らない演算に乗法記号(*)を用い、加法記号(+)で表記するのは演算が可換の場合に限られます。
ちなみに系(文字列の集合、+、"")は半群というかモノイドですね。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
「科学者は100%安全だと保証できないものは動かしてはならない」、科学者「えっ」、プログラマ「えっ」
後悔仕様 (スコア:4, 興味深い)
String の連結は、左右が可換ではないのだから + ではなくて * だろうという話は
いまさらだよねということでそのままなのを残念に思っていたりします。
すでに定着した仕様はそうそう変えるわけにいかないのはわかっていますが、
Dr. Dennis Ritchie もC言語の設計で creat の spell を挙げていますので、
せっかくなので、まつもとさんの心の棘を訊いてみたいと思います。
Re:後悔仕様 (スコア:1)
正直に言って解らないのですが、* は左右可換な演算子として使われることも多いですよね。例えば、実数の掛算とか。なぜ左右可換な演算子として + よりも * の方が良いんでしょうか?
Re:後悔仕様 (スコア:1)
"a" + "b" ≠ "b" + "a"
は納得いかないけれど、
"a" * "b" ≠ "b" * "a"
だったならいいやのような話。
文字列の反復 String#* の場合
"a" * 2 => "aa"
これも ** だったなら
"a" ** 2 => "aa"
"aa" ** 3 = "aaa" ** 2
のような話。
現状の仕様で何か困るのかといえば、特に困っていないので弱いんですけど。
Re:後悔仕様 (スコア:0)
「なぜ」ですか?
#同じ疑問をもつACより
Re:後悔仕様 (スコア:1)
Re:後悔仕様 (スコア:0)
# 私も + よりも * が向いている理由が理解できていない一人。
Re:後悔仕様 (スコア:2, 参考になる)
群や環といった代数系について勉強しましょう。
これらの系では一般に、可換と限らない演算に乗法記号(*)を用い、加法記号(+)で表記するのは演算が可換の場合に限られます。
ちなみに系(文字列の集合、+、"")は半群というかモノイドですね。
掛け算と足し算 (スコア:0)
掛け算は順を交換不能
足し算は順を交換可能
という感じがあるからかな。
Re:後悔仕様 (スコア:0)
いちいち勉強してられっかぁ~!っていうか、どうやったら「『群や環といった代数系について勉強』すると解る」と解るんですか?
で、文字列の連結はその代数系に含まれるのですか?
ポインタ希望。
#物分りの悪いACより
Re:後悔仕様 (スコア:0)
少なくともうちの大学では大学1年の線形代数の講義でやる。
文字列の演算は文字列の演算であって四則演算でも代数 (スコア:0)
プログラムで記述する文字列の連結演算は数値の四則演算でも
代数系でもなくて、大昔に石ころを並べて数を勘定していた
時代のモノとモノの足しこみ(3個並んだ石ころの列に、もう
3個の石ころをつなげて並べて合計6個にする、というような)
のイメージでしかないと思うんですよ。
記号の用法はそれを用いる場面で異なる意味を持つ
まつもと氏からの回答(Re:文字列の演算は文字列の演 (スコア:0)
めでたしめでたし。
Re:後悔仕様 (スコア:0)
+ と * は誤記ですよね?
Re:後悔仕様 (スコア:1)
私はインタビュー英訳 [sharmin.jp]をやっているのですが,
質問の英訳と,/.org を含め,他のサイトへのポストについて
お許しをいただけませんでしょうか?
(ruby-doc.orgからも引き合いがあります)
よろしくお願いします.
Re:後悔仕様 (スコア:1)
ただし、私が誤解して記述した部分に対する指摘もフォローしてください。
よろしくお願いします。