В первый раз пользователь стека переполнения, но иногда скрытный, надеюсь, вы, ребята, можете мне помочь.
Итак, первая часть моего задания - отбросить все «ведущие нули» в списке.
ex: (0 0 0 0 0 1 0 1 0 1) -> (1 0 1 0 1)
Чтобы сделать это, я подумал использовать оператор IF, чтобы проверить, является липервый элемент был 0 или нет, и рекурсивно вызывал остальную часть списка, пока не было больше ведущих нулей.Поскольку я практически не представляю, как программировать в Scheme, через поиск в Интернете я придумал то, что вы видите ниже.Однако когда я запускаю его, DrRacket говорит мне, что аргументов нет - я предполагаю, что это либо синтаксическая ошибка ... либо, скорее всего, я понятия не имею, что я делаю.Так что, если бы вы могли мне помочь, я был бы очень признателен!
>(define zz
> (lambda (n)
> (if (= (car (n)) 0)
> (zz (cdr (n)))
> ((n)))))
>
>(remove '(0 0 0 0 1 0 1 0))
Ошибка, которую я получаю в DrRacket:
"применение процедуры: ожидаемая процедура, учитывая: (00 0 0 1 0 1 0) (без аргументов) "
Опять же, большое спасибо!(PS Извините, если форматирование немного странное ...)
РЕДАКТИРОВАТЬ
Хорошо, изменив некоторые вещи, я теперь получаю тип "ожидает" в качестве 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)))
Работает, большое спасибо!