2017-02-10 11 views
0

У меня есть список, в котором есть пары.Как я могу вернуть пару из списка пар в Схеме?

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

И конечно '(а (Ь 1))' является возвращаемое значение, а не '' (a (b 1)) ', что некоторые потомки Схемы могут отображаться в их REPL. – Sylwester