SATS vs. DATS

Two primary file name extensions used by ATS are .sats and .dats.

A .sats file is simply a special case of .dats file that does not contain
implementation code for values and functions. Also, in a .sats file,
value and function declarations should not follow the keyword ‘extern’.

For instance, in a .sats file, we can have the following declaration:

fun foo (x: int, y: int): bool

The same declaration needs to be written as follows in a .dats file:

extern
fun foo (x: int, y: int): bool

Note that ‘staload’ and ‘dynload’ can be applied to both .sats files and
.dats files.

‘staload’ is for making declared names and template implementations
available
to subsequent code for typechecking and compilation while ‘dynload’ is for
doing
initialization of a package at run-time.