參數 (程式設計)
更準確地說，參數模式或參數共有三種類型：輸入參數（入參）、輸出參數（出參）、輸入輸出參數（出入參），這些參數往往使用codice_52、codice_53、codice_54來進行表示。輸入引數輸入引數（針對輸入參數的引數）必須是一個值，例如已經被初始化了的變數或常值，而且不能重新定義獲分配它。輸出引數必須是可分配變數，但不必初始化而且任何現有值均不可存取輸入值，執行函數後必須分配一個值。輸入輸出引數必須是已初始化了的可分配變數，並且可以選擇給其分配一個值。確切的要求和執行情況因語言而異，例如在Ada 83中，即使分配後也只能分配輸出參數（在Ada 95中刪除了該參數，以消除對輔助累加器變量的需要）。這有些類似於值的概念，也就是左值（，具有值）、右值（，可分配）以及左右值（，具有值且可分配），不過這些術語在C語言中有特殊含意。
协变与逆变
由于泛型类型的协变性，类型系统并不稳健。这是故意为之（当然也无疑会引起争论）。经验表明稳健的泛型类型规则在程序员的直觉面前如同废纸。如果想的话，工具仍可简单地提供稳健的类型分析，这可能对诸如重构之类的任务有所帮助。 这些术语来源于范畴论中函子的记法。考虑范畴 C，其中的对象是类型、其态射代表了子类关系≦（这是一个任何偏序集合可被看成范畴的例子）；那么诸如函数的类型构造器接受两个类型 p 和 r 并创建一个新类型 p→r，即它把 C 中的对象映射到 C 中。通过函数类型的子类规则，这个运算逆转了第一参数上的≦顺序而在第二参数上保持该顺序，即它是一个在第一参数上逆变、而在第二参数上协变的函子。