Первый пользователь stackoverflow, но случайный lurker, надеюсь, вы, ребята, можете мне помочь.Пожалуйста, помогите мне понять схему: нет аргументов?
Итак, первая часть моего задания - отбросить все «ведущие нули» в списке.
например: (0 0 0 0 0 1 0 1 0 1) -> (1 0 1 0 1)
Чтобы сделать это, я думал использовать оператор IF, чтобы проверить, был ли первый элемент а 0 или нет, и рекурсивно вызывать остальную часть списка до тех пор, пока не будет больше начальных нулей. Поскольку я понятия не имею, как программировать на Схеме, через поиск в Интернете, я придумал то, что вы видите ниже. Однако, когда я запускаю его, DrRacket сообщает мне, что нет аргументов - я предполагаю, что это либо синтаксическая ошибка .. или, более вероятно, я понятия не имею, что я делаю. Итак, если бы вы могли мне помочь, я бы очень признателен!
>(define zz
> (lambda (n)
> (if (= (car (n)) 0)
> (zz (cdr (n)))
> ((n)))))
>
>(remove '(0 0 0 0 1 0 1 0))
Я получаю ошибку в DrRacket является:
"Процедура подачи заявок: ожидается процедура, учитывая: (0 0 0 0 1 0 1 0) (без аргументов)"
Опять же, спасибо много! (PS Извините, если форматирование немного странно ...)
EDIT
Хорошо, меняя на некоторые вещи, теперь я получаю «рассчитывает ввести в качестве 1-й аргумент, учитывая: (0 0 0 0 0 1 0 1 0), другие аргументы: 0 "ошибка помечена в моей инструкции if.
>(define zz
> (lambda n
> (if (= (car n) 0) <----- here
> (zz(cdr n))
> (n))))
EDIT 2
>(define zz
> (lambda (n)
> (if (= (car n) 0)
> (zz (cdr n))
> n)))
Он работает, спасибо большое!
@ Scheme.Is.Strange Извините, мой вызов '=' отключен. Проверьте обновленный пример. – new123456
Да, ваш код идеален, не возражаете ли вы объяснить, как работает синтаксис схемы? Я знаю, что мой вопрос расплывчатый и многого требует, но только некоторые советы будут приятными. –
Хорошо, я думаю, я познакомлюсь с Схемой, спасибо большое! –