函数式编程逸闻之 - 天生无null

Author: 102419@gmail.com
Created at: 2020-12-09

先看普通的命令式编程(imperative programming), 比如在 JavaScript 里可以这样做:


    let x;
    x = "abc";
    

如上所示,在命令式编程里,声明与赋值可以分开,这就给了 null 诞生的机会与生存的空间。

但在函数式编程里,不能这样做,因为纯函数式是没有变量的,声明与赋值不可分开,只能这样:


    let x = "abc"
    

这里, x 严格来说不是一个变量,这一行代码是做了一个 binding, 是将 "abc" 这个值绑在 x 上,从此 x 就只能是这个值,不能改变。

假设给 x 绑定 null, 并且一旦绑定就不能改变 x 的值,这种情况下很显然,这样做毫无意义,这个 null 也毫无作用。

因此,在函数式编程里很自然地就没有 null(或nil), 而且是天生就没有这个概念,很自然就没有,而不是故意避开。

←← →→