Ваш второй if
не имеет особого смысла.Я предполагаю, что вы хотели проверить, появляется ли (car a)
где-то ниже по списку, но (car (dups (cdr a)))
не дает вам этого.Кроме того, (car (dups ...))
является проблемой типа, поскольку dups
будет возвращать логическое значение вместо списка, а car
ожидает список (или фактически пару, из которой состоят списки).
То, что вам нужно, это вторая функция для вызова в тесте этой секунды, если.Эта функция берет элемент и список и ищет этот элемент в списке.Конечно, если вам разрешено, используйте find
, в противном случае реализуйте какой-нибудь my-find
- это довольно просто и похоже на вашу dups
функцию.