I’m the author of this if anyone has any questions about ATS.
Do you have a mnemonic for what the different file extensions cats/hats/sats/pats/dats mean? I couldn’t keep it all straight last time I dabbled with ATS. I assume hats is something like a header file in C.
sats is for statics (that is types and definitions). They contain type and function declarations but not implementations. They are ‘staloaded’ in dats files, which are for dynamics (that is runtime stuff). They usually contain the implementations of things in sats but can be staloaded too if they contain template implementations.
cats is for inline C code. hats are header files and they contain things that are #included (vs staloaded). #include is textual inclusion in the source - as if it had been typed in directly. This often contains #define or macro definitions. In ATS 2 hats also tend to contain template definitions. See here for an example where a template function is specialised within a scope and the hats for the rest of the implementation is #included.
I don’t think pats is used anymore.
sats and dats are recognised by the compiler. The others are just convention. I usually only use sats/dats/cats in my code.