它只能做一次，通常是在变量被创建的时候，不允许后续的重新赋值。表达式的求值，如果不改变机器的可察见状态，并且对相同的输入产生相同的值，就没有副作用。指令式赋值，在销毁旧值并使之不可获得时，在将旧值替代为新值时，就可能介入了副作用；为此在LISP和函数式编程中，这被称为“破坏性”（destructive）赋值，类似于“破坏性更新”。在纯函数式语言比如Haskell中，单赋值是赋值的唯一形式，这里没有在指令式语言意义上的变量，而是命名的常量值，并具有可能的合成（compoud）本性，即它们的元素"在需要