Edited at

総和のシグマの範囲は集合と要素で書くべき

カレンダーが空いていたので,以前から思っていたポエミーなことを書いてみようと思います.


提案

提案:総和の記号の要素の範囲を書くときは集合で書こう

例えば、 $A=\{a_1, a_2, ..., a_n\}$ があるときに関数 $f:A\to \mathcal{R}$ による写像の値の総和を記述するときは、$\sum_{i=1}^n f(a_i)$ よりも $\sum_{a\in A} f(a)$ で書こう ということです.


理由① リーダブルなプログラムの観点から

Qiita ということで,まずはプログラム的な観点から理由を述べます.

集合ではなくなってしまいますが,values = [32, 18, ..., 49]といった配列があるとき,

for (const i=1; i<n; i++) {

sum += values[i]
}

よりも

for (let value of values) {

sum += value
}

の方が指定した値がわかりやすいのと同じです.

(上記の例だと for が短いのでわかりやすいのか微妙ですが...)


理由② 並び順からの開放

これが一番の理由なのですが, 集合には,要素間の並び順は存在しない ということが明示できるからです.

$\sum_{i=1}^{n} f(a_i)$ と表すと, $f(a_1)$ から $f(a_n)$ と順に足し合わせる と読み取ってしまいます.これでは,集合にはないはずの 並び順 という概念が式に現れてしまいます.

対して, $\sum_{a \in A}f(a)$ と表すと,集合に対しての操作であることがはっきりと読み取れます.こうすることで,読み取るときに一種の写像として捉えることができます.


おわりに

集合と写像の考え方っていいよね というポエムでした.

お付き合いいただきありがとうございました :christmas_tree: