2014-04-30 50 views
0

我正在運行使用命令行版本的球拍的程序。程序期望2個參數加可選參數與關鍵字

在某些時候,我打電話:

(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))) 

爲什麼它說排序期望兩個參數?通過Racket GUI運行時,我沒有問題。

+0

看起來像你試圖使用球拍的內置'排序'。你確定*你的排序是在那個時候定義的嗎? – uselpa

回答

1

看起來你試圖執行球拍內置的sort程序,該程序實際上接收2個參數(一個列表和一個比較程序)以及帶有關鍵字的可選參數。

請確保您定義的sort過程實際上是在被調用的一個,通過在那裏你真正使用它,或者只是爲了確保它重新命名爲說,mysort和使用首先定義它的點之前名稱一致 - 因爲無論如何,覆蓋現有程序並不總是一個好主意。

+1

就是這樣,忘記了內置函數,因爲我沒有被允許使用它們來執行這個程序。 – elykl33t