GNU Emacs は、異なる複数のタイプを扱います。実際のデータはヒープにストアされ、 プログラムは(唯一) ポインタを通し、そのデータに対しアクセスします。ポインタは ほとんどのインプリメンテーションにおいて 32 ビットの幅を持ちます。対象のオブ ジェクトを指すのに 24 ビットから 26 ビット分ぐらいを用い、残りの 6 ビットから 8 ビットをオブジェクトのタイプを示すタグとして用います。
データに対するアクセスは(全て)タグの付けられた(訳注:tagged)ポインタを通すた め、 (どんなオブジェクトであっても) オブジェクトのタイプを決めることは(常に)可 能です。これにより、変数のタイプをなくすことで(訳注:untyped)、アサインされた 値を(タイプにかかわらず)変更することが可能になります。関数アーギュメントもどの ようなタイプを取ることもできます。あるタイプのアーギュメントのみを受け取る関数 が必要な場合、適切なプレディケートを用い、明示的にタイプのチェックを行なう必要 があります(セクション 2.16 [プレディケート]、ページ 20 参照)。