はじめに
冪等性って同じ入力に対して常に同じ出力するっていう意味だと思ってたんですが、それは正確ではなく、同じ入力を何回しても状態が変わらないという意味でした。
つまり、以下は冪等性ではないです。
function(a) {
b += a; // bはなんかグローバルな値
return a;
}
何回やってもaが返ってきますが、内部的にはbが変化してます。
以下が冪等性です。
function(a) {
b = a;
return a;
}
というのが前提です。
冪等 is 何?
上記の勘違いを昔してて、最近ふとそもそも冪等ってなんやねん。冪なんて冪等以外で見たことないわって思ったので調べました。
そもそも「冪」というのは累乗の意味らしいです。言われてみたらべき乗っていう言葉は聞いたことありました。
冪しても等しい結果になる、つまり1を何回累乗しても1だよねっていう意味っぽいです。
さらに冪っていう時は覆うという意味があるらしく、確かに幕って漢字に冠がついてるのでなんかすごい覆う感出てますね。
(https://www.kanjipedia.jp/kanji/0006240800 より引用)
さらにさらに冪冪(べきべき)っていう熟語があるらしく、「雲や塵 (ちり) などが一面におおうさま。」という意味があるので、使われてない物置に入った時に埃まみれになってたら是非「冪冪となってるな」って言ってみてください。きっと一目置かれます。(使い方あってるのか分かりませんが)
あとは冪等性は英語でidempotentと書きます。
語源的には、idemがsameでpotentがhaving powerっていうことらしいです。(参考 https://www.merriam-webster.com/dictionary/idempotent )
idemは分かりませんが、potentはpotentialとかと同語源っぽいです。これで覚えました。
ちなみに、たまに使うケンブリッジ英英辞書だと、idempotentの意味は、
An idempotent element of a set does not change in value when multiplied by itself.
となってて、idempotentの説明にidempotent使うなよって思いました。(同サイトを馬鹿にする意図はありません。結構使わせてもらっててとてもわかりやすいので、むしろ好きです)
って思ったんですけど、idempotent elementっていうのはこういうものだよ。だからidempotentはこういうことだよって説明してるだけなんだと気づきました。ごめんなさい。
まとめ
言葉って奥深いですね。