2016-11-23 15 views
1

列表我新的計劃,目前沒有使用(球拍版本),所以我沒有做這樣的內置功能,如過濾器等。打褶元件從方案

我任務現在是讓元素我的輸入列表,並只拿出來的那些我上面的MINVALUE和下面我的MaxValue

在我的「樂善堂」,例如可變我有(2 4 1 6 5 4 7 3)

在我的MinValue我有2

在我MaxValue我有5

所以,現在當我申請類似的東西像

(remove (< # minVal) lst) 

這在技術上應該給撈出冷落:

(2 4 4 3) 

但我得到的錯誤:

READ from #<INPUT CONCATENATED-STREAM #<INPUT STRING-INPUT-STREAM> #<IO TERMINAL-STREAM>>: objects printed as # in view of *PRINT-LEVEL* cannot be read back in 

主要問題:

確實計劃已定義的變量一樣,通過列表迭代時刪除/刪除,如果使用的功能,這樣我就可以使用它#特定的?

有沒有一種方法可以得到這個以這樣一種方式工作:

(remove (< # minVal) lst) 

謝謝!

標籤「功課」應該有,但我不能創建它尚未

+0

您正在使用哪種方案?這看起來很像Lisp錯誤消息。 – molbdnilo

回答

0

幾乎所有的計劃我知道的包括filter過程,它不是具體到球拍,你應該能夠使用它(remove不這項工作的正確工具)。

只需通過接收依次在每個元件中的lambda並可以設置任何條件,用於確定哪些元素在輸出列表中去:

(filter (lambda (e) (and (>= e 2) (< e 5))) 
     '(2 4 1 6 5 4 7 3)) 

=> '(2 4 4 3) 

沒有#變量,通過一個列表上循環並讓您每個元素依次執行,您必須使用遞歸來顯式地遍歷列表,或者使用期望列表和lambda的內置過程之一 - lambda的參數表示每個元素。

如果由於某種原因你不能使用filter,很容易從頭開始實現它,並再次注意,我們並不需要使用remove,並且pred被稱爲與每個元素:

(define (filter pred lst) 
    (cond ((null? lst) '()) 
     ((pred (car lst)) 
     (cons (car lst) (filter pred (cdr lst)))) 
     (else (filter pred (cdr lst))))) 
+1

謝謝!這解釋了它! – Sparrow