41429


golang において、列挙型を定義するときに、 iota を使うことで、自動インクリメントして値を付与できる、みたいな記述をウェブで見つけました。

### 質問

  * iota, とはどういう意味合いの言葉なのでしょうか? というのも、例えば const, enum, int などは何かしらの略語であるので、ある意味覚えやすいのですが、 iota がなぜ iota なのかが自明ではないなと思い、質問しています。


CC BY-SA 3.0
2018-02-03T03:06:46.680
41427
2019-12-05T09:24:51.417
2018-02-03T06:26:13.693
754
754
question
go 専門用語
golang における iota の名前の意味は?


直接的にはSchemeのiota関数（源流はAPL）あたり由来でないですかね。意味は「i」に相当するギリシャ文字。


CC BY-SA 3.0
2018-02-03T03:53:41.673
41429
2018-02-03T03:53:41.673
4010
41427
answer


iota（イオタ）はギリシャ文字 ι を指す単語です。iota によって「ひとつずつ増える整数値の列」を示すプログラミング言語は Go 以外にも C++ の
[`std::iota`](https://ja.cppreference.com/w/cpp/algorithm/iota) や Scheme の
`iota`、そして APL の `⍳` などがあります。

Go の `iota` は APL に由来していると言って良さそうです。というのも Go の設計者の 1 人である Rob Pike
氏の話によると、まず同じく設計者である Ken Thompson 氏が `iota` という名前を提案したところ設計者 3
人（Ken、Robert、Rob）全員が APL
のインタプリタを実装したことがあったため合意に至った、と[書いている](https://groups.google.com/d/msg/golang-
nuts/ku6rvTmLM4o/5hHFBw6FAwAJ)からです。

では APL の `⍳` はどういう由来なのでしょうか。APL の作者 Kenneth Iverson 氏はチューリング賞講演 ["Notation as
a Tool of Thought"](https://www.jsoftware.com/papers/tot.htm) で
"integer"（整数）の頭文字 i から転じたと示唆しています。

> For example, the _integer_ function denoted by `⍳` produces a vector of the
> first `n` integers when applied to the argument `n`, ...

他の説として、慣用的に "one iota"
には「最小の量」という意味があるからではないかと[書かれていたり](https://groups.google.com/d/msg/golang-
nuts/ku6rvTmLM4o/vQ4Fns-DAwAJ)、『素数夜曲』†に "index" の頭文字 i から転じたと書かれていたりします。

* * *

†『素数夜曲 女王陛下のLISP』（著：吉田 武、第1版）の p. 474 脚注より引用

> なおこの名称は，「その内容である _index_ の頭文字を採用するに当たり，より印象的にする為に対応するギリシア文字イオタ ι
> を用いたことに因る」とされている．


CC BY-SA 4.0
2019-12-05T09:24:51.417
61139
2019-12-05T09:24:51.417
19110
41427
answer