2017-02-13 29 views
0

Я пытаюсь сравнить, если два списка имеют одинаковые элементы в них без учета порядка.Плохой объект функции

элемент из? является частью набора функций, чтобы проверить, если элемент принадлежит множеству

`(define (element-of? x set) 
    (cond ((null? set) #f) 
     ((equal? x (car set)) #t) 
     (else (element-of? x (cdr set))))) 
` 

это мой код, чтобы проверить, если список «а» имеет те же элементы, что и список «б»

`(define (check-unit-match cmp-to cmp-with) 
    (cond ((null? cmp-to) #t) 
     (else (let ((cmp-val (element-of? (car cmp-to) cmp-with))) 
       (and cmp-val (check-unit-match (cdr cmp-to) (cmp-with))))))) 
` 

я получаю плохо Функциональный объект: ((м 2) (сек 1))

, когда я передаю следующий аргумент (контрольная единица-матч '((сек 1) (м 2))' ((м 2) (с 1)))

+0

Вы не сравниваете, если два списка имеют одинаковые элементы, а не каждый элемент в первом аргументе является членом второго. например. '(check-unit-match '(1 2 3)' (1 2 3 4 5 6 7)); ==> # t' – Sylwester

ответ

0

Ваша последняя строка contai ns (cmp-with). Это приложение функции. Но cmp-with - это список, а не функция.

 Смежные вопросы

  • Нет связанных вопросов^_^