मैं योजना के लिए नया हूँ और एक त्वरित लिखने की कोशिश कर रहा हूँइसमें सॉर्ट करें और मुझे लगता है कि "फ़िल्टर फ़ंक्शन को पता नहीं चल सकता है। मेरा मानना है कि फ़िल्टर दो तर्क लेता है, एक प्रक्रिया जो एक सूची में प्रत्येक तत्व पर लागू की जा सकती है और फिर एक सूची जिस पर प्रक्रिया लागू की जाती है।
#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 कार एल) वास्तविक होना चाहिए, और यह जो मिल रहा है वह कार प्रक्रिया है।
मैंने फिल्टर फ़ंक्शन को निकालने और इसे स्वयं चलाने की कोशिश की, जैसे:
(फ़िल्टर (लैम्ब्डा (x) (<x कार "(3 5 1 7 8))
लेकिन यह मुझे बता रहा है कि केवल एक तर्क है। मुझे यकीन नहीं है कि ऐसा क्यों है।
तो, कोई विचार? मैंने शुरू में सोचा था कि यह फिल्टर फ़ंक्शन के तर्कों के साथ एक समस्या हो सकती है, लेकिन अब मैं सोच रहा हूं कि शायद लैम्ब्डा "(कार एल) पैरामीटर को स्वीकार नहीं कर सकता है?" क्या पास होने से पहले इसका मूल्यांकन नहीं होगा?
उत्तर:
उत्तर № 1 के लिए 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))))]))