概要mapはkeyとvalueのペアで関連付けされた配列です。mapは高速な読み取りアクセス(内部的にはハッシュテーブルを使用しています)と取り扱いやすいシンタックスを提供します。データ型と異なり、mapはseriesではなく、したがってオフセットと位置の概念を持ちません。中間に位置するデータ型です。引数がintegerの場合、指定された数のスロット分のメモリを確保した空のmap!が生成されます。(通常は、mapの拡大は動的に行われます。)メモ:mapのボディ、つまりspecブロックということになりますが、この要素数は偶数である必要があります。奇数の場合は、エラーが発生します。そのため、初期化シンタックスでは例えばlogic!のような具体的な値が必要になります。これはmapの中身がkeyとvalueの組み合わせに見えるようにするためです。取り扱いやすさの観点から、wordのkeyにアクセスする時には、set-wordでkeyを指定する必要はなく、シンプルにwordを指定できます(map生成時も、中身にアクセスする時も同様です)。リフレクタ(後述のリフレクションのセクションで説明します)は、set-wordではなくwordを返します。これも、後続の処理を簡単にするためです(特にマッチング処理はset-wordよりもwordの方が簡単になります)。参照時には区別しません。値として指定されている場合、keyは生成されません(「keyの削除」セクションを参照してください)。mapを生成する時には、全てのキーはディープコピーされます。series!型のvalueはmapの生成時にはコピーされません。選択はユーザーに任されます(これは一般的なユースケースのための最適化です)。アクションを使用することです。全ての有効な型のkeyこれら全ての読み取りアクセスは大文字・小文字を区別しません。リファインメントが存在する方法であれば可能です。(1つ以上の)名前/値のペアのブロックこれらの全ての書き込みアクセスは大文字・小文字を区別しません。リファインメントが存在する方法であれば可能です。ネイティブは一度にたくさんのkeyを設定することができるため、一括変更時に便利です。NOTE:mapに存在しないkeyを設定しようとした場合、単純に新しいkeyとして追加されます。存在するkeyを追加しようとした場合、keyに対応するvalueが変更されます。新しいものは追加されません(デフォルトでは大文字・小文字を区別しません)。して扱われてしまわないようにするためにこのような記述になっています。このやり方は必要なspec引数のblockを作る一例です。アクションを使用することで一度に全てのkeyを削除することもできます。mapの中のkey/valueのペアの数を返します。mapの中のkeyのリストをblockで返します(set-wordはwordに変換されます)。mapの中のvalueのリストをblockで返します。mapの中の全てのkey/valueのペアをblockで返します。