回答:
私見これはコンテキストに依存し、時には同義語であり、時にはそうではありません。たとえば、C#には、イテレータを分類するデータ型 "IEnumerable"がありますが、反復ではなくシンボリック定数用の "enum"宣言もあります。他のプログラミング言語(または他のコンテキスト)では、状況は同様である場合とそうでない場合があります。
プログラミング言語のキーワードとしてではなく、英語の動詞としての2つの単語を意味する場合、
また、列挙には反復が必要であり、列挙は何らかの反復を意味するため、通常、これら2つのプロセス記述は交換できます。
他の人が言ったように、正確なセマンティクスは用語を使用するプログラミング言語に依存するため、純粋に言語学的な評価を行います。
「Iterable」は、多くの言語に組み込まれている「反復」と「反復子」を明らかに指す、かなり新しく作られた単語です。したがって、そのような型はほぼ確実に反復子をサポートします。最も基本的なイテレータ機能:すべてのアイテムを1回処理します。距離の反転、削除、測定などはサポートされる場合とされない場合があります。
「列挙可能」とは、物事を列挙することを指します。これは、言語がその目的のために「反復可能」をまだ使用していない場合にのみ、反復と同じことを意味します。言語に両方がある場合、「列挙可能」とはほぼ確実に他の何か、おそらくより強力な何かを意味します。ほとんどの場合、各要素を一意の数値インデックスで接続するという概念をサポートし、おそらくランダムアクセスを許可します(たとえば、1番目と2番目の要素の前に3番目の要素を取得します)。
それは言葉だけから合理的に推論できるすべての意味についてです。具体的な状況では、標準ライブラリAPIドキュメントを参照してください。
両方の用語の厳密な定義に焦点を当てたい
Iterable
物事を反復し、要素に1つずつアクセスすることです。
この用語Enumerable
はターニングマシンに由来すると思います。適切な順序で要素を1つずつリストする機能についてです。物事は一つずつリストアップすることができcountable
、それぞれに一意の通信インデックスがあります。要素を指定すると、一意のインデックスを取得できます。インデックスを指定すると、そのインデックスに関連付けられた1つの可能な要素のみを見つけることができます。
つまり、Enumerable
は、要素を生成する能力を意味します。たとえば、いくつかのプログラミング言語Haskell
がこのアイデアを実装しています。Enum型のクラスがありChar
、インスタンスの1つです。
Prelude> fromEnum True
1
Prelude> fromEnum False
0
Prelude> toEnum 1 :: Bool
True
Prelude> fromEnum 'a'
97
Prelude> enumFromTo 'a' (toEnum 122 :: Char)
"abcdefghijklmnopqrstuvwxyz"
列挙はカウントであり、反復はリプレイです
2番目の列挙は同じ数を生成します。反復はバリエーションである場合があります
フラクタルは、関数の反復によって構築され、最後の反復の結果で関数を繰り返し、各反復は異なる値を持ちます