2014-11-16 47 views
0

我是新來的計劃,並試圖寫一個快速排序,我似乎無法得到濾波器的功能。我相信過濾器有兩個參數,一個過程可以應用於列表中的每個元素,然後是應用該過程的列表。計劃(博士)過濾器問題

#lang racket 

;Quick sort 
(define(quickSort l) 
    (cond 
     [(null? l)('(()))] 
     [(append(quickSort(filter(lambda(x)(< x car l))(cdr l))))(list(car l))(quickSort(filter(lambda(x)(>= x car l)(cdr l) cdr l)))] 
     ) 
) 

(quickSort '(5 9 4 6 8 7 1 9)) 

這給了我違反合同,上面寫着(< X汽車L)應該是什麼?真實的,什麼是越來越是汽車的過程。

我試圖提取所述過濾器功能,並通過自身運行它,像這樣:

(過濾器(拉姆達(X)(< X汽車 '(3 5 1 7 8))(CDR'(3 5 1 7 8))))

但這告訴我只有一個參數。我不知道爲什麼。在我看來,有兩個。

那麼,有什麼想法?我最初認爲它可能是過濾器函數的參數問題,但現在我想可能lambda不能接受(car l)參數?在通過之前不會評估嗎?

回答

1

縮進你的代碼,然後你會看到有語法錯誤。我已經在下面糾正它們:

;Quick sort 
(define (quickSort l) 
    (cond [(null? l) '()] 
     [else (append (quickSort (filter (lambda (x) (< x (car l))) (cdr l))) 
         (list (car l)) 
         (quickSort (filter (lambda (x) (>= x (car l))) (cdr l))))]))