Common Lisp 高阶函数学习笔记: function, funcall 和 apply...
Common Lisp 高阶函数学习笔记: function, funcall 和 apply 的用法 目录 0 概述 1 函数 function 的用法 2 函数 funcall 的用法 3 函数 apply 的用法 0 概述 高阶函数是 Lisp 的一大特色, 所谓的高阶函数就是把一个函数当做另一个函数的参数来用, 如果把普通的函数调用看做是在二维平面上的活动, 那么高阶函数就相当于增加了一个维度:可以把高阶函数看做在三维立体空间的活动. 一般来说, 编程语言需要这种机制, 因为这样可以为开发者提供更灵活更高级的结构抽象能力, 正如<实用 Common Lisp 编程>中所说: 在 C 语言中使用函数指针, Perl 使用子例程引用, Python 跟 Lisp 一样, C# 使用代理, Java 则使用反射和匿名类. 高阶函数的一个应用场景是通用排序, 比如 Lisp 的函数 sort , 调用形式如下: (sort '(6 2 5 3 7 0) #'>) 我们可以选择不同的比较函数(就是 #' 后面的 >), 这样的实现就比较灵活, 当我们想换一个比较函数, 如换成 < , 我们并不需要修改 sort 的代码, 只要新写一个 < 函数, 然后把它作为 sort 的参数传递进去就可以了. 另外回调函数和钩子也能够保存代码引用以便于以后运行. 1 函数 function 的用法