この記事のコメント欄でn..mでmを含むかどうか、みたいな話になったので、調べてまとめてみました。開区間、閉区間や[n, m), [n, m]で表されるものです。
普段使わない言語も含まれるため、誤りがあればご指摘をお願いします。
前提
n, mはオーバーフローしない範囲の自然数あるいは0でn<mとする。
様々な言語での結果
Rust
n .. m // mは含まれない
Rustの記事からの派生なのでとりあえずRustを。mは含まれません。
Python
range(n, m)
mは含みません。ただし、random.randint(n, m)はmを含むみたいなややこしさがあります。
Java
IntStreamクラスにRange関数とRangeClosed関数があります。
JavaScript(ES2016以降), 0始まりのみ
...Array(m).keys()
ちょっと特殊な例ですが、mは含まれません。
Ruby
n..m # 含む
n...m # 含まない
しょしんしゃが最初に習うの点2個の方が多いイメージ
Elixir
n..m # 含む
Elixirの範囲型はmを含みます。Rubyによく似ています。
PHP
range(n, m)
mを含みます
Kotlin
n..m
mを含みます。
Swift
n...m // 含む
n..<m // 含まない
Scala
Range(n, m, 1) // [n, m), 間隔1
n to m // mを含む
n until m // mを含まない
まとめ
似たような言語でも扱いが違って非常にややこしいです。
私が知っている言語を主に書いたので、偏りや抜けなどあるかもしれません。
追記:どちらが主流というのはあまり意味のない分類でしたので撤廃しました。