过程预期2个参数加上带关键字的可选参数

时间:2014-04-30 18:20:48

标签: scheme racket

我正在使用命令行版本的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运行时,我没有任何问题。

1 个答案:

答案 0 :(得分:1)

您似乎正在尝试执行Racket的内置sort过程,该过程实际上接收2个参数(列表和比较过程)以及带关键字的可选参数。 / p>

确保您定义的sort过程实际上是被调用的过程,通过在您实际使用它之前首先定义它,或者只是为了确保将其重命名为,mysort并始终使用该名称 - 因为无论如何,覆盖现有程序并不总是一个好主意。