ATS において最も単純な型は、プリミティブな値を分類するのに使われるプリミティブ型です。 例えば int と double というプリミティブ型があります。 これらはそれぞれ固定長の整数と倍精度の浮動小数点数を分類しています。
ATS (Postiats) の現時点でも実装では、ATS プログラムはまず C99 に従ったC言語にコンパイルされます。 それから gcc のようなC言語コンパイラによってオブジェクトコードにコンパイルすることができます。 ATS からC言語へのコンパイルにおいて、 ATS の int 型はC言語の同名の型に変換されます。 同様に ATS の double 型はC言語の同名の型に変換されます。
ATS では他にも多くのプリミティブ型がありますが、少しづつ解説します。 一般的に使われるいくつかのプリミティブ型を次に示します。
bool: この型は真理値の true か false を取り、C言語の int 型に変換されます。
char: この型はC言語の文字型に変換されます。
schar: この型はC言語の符号付き文字型 (signed char) に変換されます。
uchar: この型はC言語の符号無し文字型 (unsigned char) に変換されます。
float: この型はC言語の単精度浮動小数点型に変換されます。
uint: この型はC言語の符号無し整数型 (unsigned int) に変換されます。
lint: この型はC言語の長整数型 (long int) に変換されます。
ulint: この型はC言語の符号無し長整数型 (unsigned long int) に変換されます。
llint: この型はC言語の長長整数型 (long long int) に変換されます。
ullint: この型はC言語の符号無し長長整数型 (unsigned long long int) に変換されます。
size_t: この型はC言語の同名の型に変換されます。 これは符号無し整数型と同じ精度です。 通常 size_t 型は ulint 型と等価に扱われます。
ssize_t: この型はC言語の同名の型に変換されます。 これは符号付き整数型と同じ精度です。 通常 ssize_t 型は lint 型と等価に扱われます。
string: この型は文字列のためのもので、C言語のポインタ型に変換されます。 この変換については別の章で解説します。
void: この型は void 値のためのもので、C言語の同名の型に変換されます。 ATS において void 値が未定義であることに注意すべきでしょう。 関数が void 値を返す場合には、しばしば関数が値を返さないと言うことがあります。