1980 年代初頭にトロント大学で開発された PASCAL 系列のプログラミング言語 Turing はコレクションと名づけられたおもしろい機能をもっています。 「型 T のコレクションとは、 型 T へのポインタの集合のインスタンスである」として定義してあります。
⇒ R. C. ホルト他著、 湯浅太一他訳
プログラミング言語 Turing1990、 ISBN 4-7665-1075-5コレクションは代入したり、 比較したり、 引数として渡したり、 bind したり、 const 宣言によって名前をつけたりすることはできない。 コレクションは副プログラムの中で宣言してはいけない。 (73 ページ)
コレクションはグローバルなシングルトンであり、 その要素の型が一対一で決まっています。 そのため、 コレクションによって要素の型を指定することが可能です。 ポインタ定義にコレクション識別子を使うとき、 そのコレクションに結びついている要素の型をコレクション識別子で表すわけです。
var slist: collection of record entry: integer next: pointer to slist end var first: pointer to slist := nil(slist) procedure slist_prepend(p: pointer to slist) slist(p).next := first first := p end slist_prepend var item: pointer to slist new slist, item slist(item).entry := 1 slist_prepend(item)