我们在编制程序来解决问题时,必须对一些数值进行操作。而一个问题的不同特例可能要用到不同的值。如果我们在程序中用一个特定的值解决问题的一个特例的话,当需要解决另一个特例时,就不得不修改程序里的那些特定的值。由于上述原因,大多数程序都编制成能处理各种特例的通用程序。程序设计语言为了能支持通用程序设计,就必须允许程序员用变量名来代替任何数值。这样,在程序中可以用变量名来代替特定的数值,而在处理不同特例时只需要简单地改变输入值以使变量名与该值对应,而不必改动程序。
在Fuxi中,一个变量既可以表示一个特定的存储位置,也可以用来表示与一个表达式之间的约束关系(Binding)。变量在创建之初是一个未知量,它既可以被赋予一个特定的数值,也可以被约束为一个表达式。
若一个变量的值尚未确定,我们称它是自由变量(free variable);若已被赋予了一个特定的数值,则称为引用变量(reference variable);若被约束为一个表达式,我们称它为约束变量(bound variable)。