text: 在这个简单的例子中，我们定义了一个生产自增器的函数makeCounter。由makeCounter返回一个函数，这个函数就是一个自增器。每次调用自增器就会增加一。很明显，makeCounter是高阶函数，因为它返回了另外一个函数。
  makeCounter首先定义了一个变量varcount=0（在环境中添加了一条count到0的约束）。函数本身创造了一个作用域，这个函数内部定义变量count的作用域就是函数开始直到函数返回。也就是说，函数返回后，就不在变量count的作用域中了，变量的生命周期也就结束了。
  然后，makeCounter中又定义了一个新函数inc。inc引用了自由变量count，并将count加一后再赋给count（取得环境中count到某个值的约束，加一后更新这条约束），最后将count作为返回值返回。而后makeCounter又将inc作为返回值返回。
  在函数makeCounter返回后，由于count已经不在其作用域内，这看起来应该是无法正确执行的。所以，为了让程序正确执行，inc需要绑定其引用的自由变量，使得即使在makeCounter返回后，count也不会消失。用命令式编程的观点来看，也就是说，inc被返回时，就创造了一个特殊的函数，该函数带着它定义时引用的自由变量的上下文环境，这其实就是闭包。
  一等函数，进一步扩展了函数的使用范围，使得函数成为语言中的“头等公民”。这意味函数可在任何其他语言结构（比如变量）出现的地方出现。一等函数是更严格的高阶函数。Swift中的函数都是一等函数。
  我们在上一小节发现，成为高阶函数，需要函数本身就具备闭包性。这一节，我们会发现更严格的一等函数和闭包的也仍然有着紧密的关系。
  我们可以这样使用上例中的自增器：