ATS 是一种多范式编程语言,旨在平衡高层抽象与严谨的软件正确性。根据《ATS 编程入门》文档,该语言支持广泛的高级功能,包括基础函数式编程、多态类型和依赖类型。与许多类型仅作为简单标签的标准语言不同,ATS 利用依赖类型来增强规范的表达能力,允许编译器在类型检查过程中解决约束条件,从而确保程序属性在编译时得到满足。

ATS 的一个核心特征是其对定理证明的整合,被称为“带有定理证明的编程”(Programming with Theorem-Proving, PwTP)。这一机制允许开发者将关系编码为“dataprops”,并将证明构建为全函数。通过在编程工作流中将证明视为一等实体,ATS 使程序员能够直接在代码中指定并验证复杂的属性——例如乘法的交换性或矩阵下标的正确性。这种方法超越了简单的类型检查,要求程序员提供正式证据,证明其逻辑符合指定的规范要求。

为了弥合高层验证与底层系统性能之间的差距,ATS 引入了“Viewtypes”和线性类型。这些功能通过指针管理内存访问,处理栈和堆分配,并利用线性通道促进异步进程间通信(IPC)。此外,该语言保持与 C 生态系统的兼容性,允许包含外部 C 代码、调用外部函数,并在必要时使用“unsafe”风格的 C 语言编程。这种形式化验证、线性内存管理和 C 互操作性的结合,使 ATS 成为构建既经过数学验证又具备系统效率的软件的有力工具。