我已经开始学习Lisp了,并且想知道以几种不同的方式完成特定任务的所有冗余是否有用?肯定有经验的Lisp程序员可以回答这个问题.
举个例子.我们可以通过以下两种不同的方式创建函数.
(defun add2 (x) (+ x 2))
Run Code Online (Sandbox Code Playgroud)
要么
(setf (symbol-function 'add2)
#'(lambda (x) (+ x 2))
Run Code Online (Sandbox Code Playgroud)
我知道这为实现不同的事情提供了灵活性.但是对于为什么拥有所有这些冗余的正确解释可以帮助我更好地理解事物.