Functional programming 公共LISP传递的参数少于所需参数-发生了什么?

Functional programming 公共LISP传递的参数少于所需参数-发生了什么?,functional-programming,lisp,common-lisp,Functional Programming,Lisp,Common Lisp,为了更好地理解函数式LISP编程,我目前正在学习一些与多项式无关的代码 (define collect-terms(a) (sort a #'compare)) (defun compare(a b) (llt (car (cdr a)) (car (cdr b)))) 我不明白当函数定义声明两个参数时,在collect术语中调用compare方法时,它如何只接受一个参数 在这种情况下,compare成功地从它传递的列表中取出子列表,并将它们用作a和b的值。collect terms

为了更好地理解函数式LISP编程,我目前正在学习一些与多项式无关的代码

(define collect-terms(a)
  (sort a #'compare))

(defun compare(a b)
  (llt (car (cdr a)) (car (cdr b))))
我不明白当函数定义声明两个参数时,在collect术语中调用compare方法时,它如何只接受一个参数


在这种情况下,compare成功地从它传递的列表中取出子列表,并将它们用作a和b的值。

collect terms根本不调用compare。它正在将compare传递给sort函数,该函数将使用两个参数调用compare。

但是compare仍然需要两个参数,不是吗?即使它只有一个列表可供使用,它如何处理这些问题?或者我理解错了什么?sort调用从列表中获取的元素上的比较函数,每次调用两个。Common Lisp没有定义。