ATS は他のプログラミング言語との相互利用を重要視しています。
C言語コード中に foo という名前の (グローバルの) 整数変数を持ち、ATS コード中で foo に保管された値を 1 増加させたいとします。これは次のように書けます:
val x0 = $extval(int, "foo") // get the value of foo val p_foo = $extval(ptr, "&foo") // get the address of foo val () = $UNSAFE.ptr_set<int> (p_foo, x0 + 1) // update foo
もう1つの例として、foo2 が first と second という名前で2つの整数フィールドを持つレコード変数であるとしてみましょう。すると次のコードは、整数 1 と 2 を foo2 の2つのフィールドに割り当てます:
ことがことだけに、extvar 宣言の機能は本質的に安全ではなく、慎重に使う必要があります。この章で紹介したコード全体は オンライン から入手できます。