我正在使用命令行版本的Racket运行程序。
在某些时候我打电话:
(sort(some-function (car set) (POWER (cdr set))))
排序程序如下所示:
(define (sort l)
(if (null? l)
'()
(insert (car l)
(sort (cdr l)))))
但是当我运行该程序时,它说:
Welcome to Racket v5.1.1.
> > > > > > procedure sort: expects 2 arguments plus optional arguments with keywords #:cache-keys? and #:key, given 1: (some-function (car set) (POWER (cdr set)))
为什么说sort需要两个参数?通过Racket GUI运行时,我没有任何问题。
答案 0 :(得分:1)
您似乎正在尝试执行Racket的内置sort
过程,该过程实际上接收2个参数(列表和比较过程)以及带关键字的可选参数。 / p>
确保您定义的sort
过程实际上是被调用的过程,通过在您实际使用它之前首先定义它,或者只是为了确保将其重命名为,mysort
并始终使用该名称 - 因为无论如何,覆盖现有程序并不总是一个好主意。