
_START_ARTICLE_
Agda
_START_SECTION_
归纳类型
_START_PARAGRAPH_
在Agda中定义数据类型的形式与在其它非依赖类型的编程语言中定义代数数据类型相似。_NEWLINE_例如，在Agda中定义皮亚诺数：_NEWLINE_data ℕ : Set where_NEWLINE_  zero : ℕ _NEWLINE_  suc : ℕ → ℕ_NEWLINE_这表示构造一个自然数有两种方式：zero 是一个自然数；若 n 是一个自然数，则 suc n 也必定是一个自然数。_NEWLINE_又如，Agda中对小于或等于关系的定义：_NEWLINE_data _≤_ : ℕ → ℕ → Set where_NEWLINE_  z≤n : {n : ℕ} → zero ≤ n_NEWLINE_  s≤s : {n m : ℕ} → n ≤ m → suc n ≤ suc m_NEWLINE_第一处构造指出：zero 必定小于或等于任何自然数；第二处构造指出：当 n <= m 时必定有(suc n) <= suc m。
_START_SECTION_
元变量
_START_PARAGRAPH_
Agda和其他类似的证明系统（如Coq）相比，一个显著的特性是程序构造中对元变量（metavariables）的大量使用。_NEWLINE_例如，在Agda中可以写出如下函数：_NEWLINE_add : ℕ → ℕ → ℕ _NEWLINE_add x y = ?_NEWLINE_“?”即是一个元变量。在 Emacs mode 中交互时，系统会提示用户所期望的类型，允许用户进一步添加具体代码到其中。该特性为增量程序构造提供了支持，从而达到了与Coq的tactics类似的效果。
_START_SECTION_
标准库
_START_PARAGRAPH_
Agda的标准库包含了一些有用的数据结构、定义和相关的定理证明，例如自然数、list与vector。目前该标准库比起Coq尚欠成熟。
_START_SECTION_
Unicode
_START_PARAGRAPH_
Agda大量吸收了Unicode字符集中的数学符号，这使得其证明更具可读性；但这同时也造成了键盘输入的不便。Agda的 Emacs mode 中提供了输入这些符号的快捷键。
_START_SECTION_
编译器后端
_START_PARAGRAPH_
目前Agda具备三个编译器后端的实现：编译到Haskell平台的MAlonzo；一个编译到JavaScript的后端；以及一个Epic后端。