2017-02-10 8 views
0

私はペアが格納されているリストを持っています。私のプログラムでSchemeでペアのリストからペアを返すにはどうしたらいいですか?

'((a (b 1)) 
    (b (c 2)) 
    (c (d 3)) 
    (d (e f))) 

(define (compare-unit unit-to-check source) 
    (cond ((null? source) '()) 
     ((equal? (car source) unit-to-check) (car source)))) 

、私は、検索クエリがリスト内のペアの車に相当しているかどうかを確認し、所定の対を返すようにしたいです。

たとえば、検索クエリに(a x)があり、(a (b 1))に同じ車が(a x)の場合、(a (b 1))を返信します。

答えて

2

あなたが必要なものだけ行い組込みプロシージャがあります - それはassocと呼ばれています:たとえば

(define (compare-unit unit-to-check source) 
    (assoc (car unit-to-check) source)) 

(define source 
    '((a (b 1)) 
    (b (c 2)) 
    (c (d 3)) 
    (d (e f)))) 

(compare-unit '(a x) source) 
=> '(a (b 1)) 
+0

そしてもちろん '((B 1))'されますSchemeの子孫がREPLに表示するかもしれない ''(a(b 1))ではなく、返された値。 – Sylwester

関連する問題