ATS から外部関数を呼び出すことは簡単です。 例えば、次のコードはその典型的な例です:
local extern fun __fprintf : (FILEref, string(*fmt*), int, int) -> int = "mac#fprintf" in (* in of [local] *) // val N = 12 val _ = __fprintf (stdout_ref, "fact(%i) = %in", N, fact(N)) // end // end of [local]
また ATS から外部関数を直接呼び出すビルトインのしくみもあります。 例えば、次のコードは上記で示したコードと本質的に同じです:
$extfcall は外部関数呼び出しを作るために使われます。 その最初の引数は関数呼び出しの返値の型です。 2番目の引数には呼び出す関数の名前を文字列で指定します。 残りの引数群は呼び出す関数への引数群になります。