KL1のプログラムでは「アトム」や「ファンクタ」と呼ばれる「記号」が
数多く使われる. 例えば, 図1.4に示す
プログラムでは, foo, bar
といったアトム, foo/1というファンクタが用いられている.
これらは目で見た所, 明らかに「文字列」である. しかしながら,
これらの記号を内部的にも文字列として扱うことは, 利用するメモリの量や,
速度 (たとえば, 文字列``bar''と, ``bal''が違うことを見るためには,
3文字を1つづつ比較しなければなならない) の面で不利になる.
そこで, KLICシステムでは, これらの「記号」は内部的には全て
「番号」で持っている. 例えば, ``foo''であれば104番, ``bar''であれば253番
と内部では変換されているのである.
この変換はKLICの出力コードを効率化するため, コンパイル時に
全て行なわれる.
さらにトレースやエラー表示のためには述語の印刷イメージを生成する ための表も必要とする.
KLICシステムで作成されたプログラムはKL1の項を読んだり
書いたりすることができるが, その時にもこの記号
番号の変換が行なわれる. つまり, 項が読み込まれる時には
内部的な番号に置き換えられ, 項を出力する時には,
番号を記号に置き換え, 人間に分かりやすく出力することができる.