Вы не можете написать два if
выражения подряд, как вы делаете;Поскольку if
является выражением, оно оценит первое ((if (null? y) 0)
), откажется от ответа (поскольку вы его нигде не используете), а затем запустите второе (которое вернет неопределенное значение, если (car y)
пустой).Кроме того, что произойдет, если y
не пусто, но его первый элемент пуст?Этот случай не обрабатывается.Как правило, в Scheme вы используете cond
для замены цепочки if-elseif-else в других языках.Что конкретно терпит неудачу иначе?Я думаю, ваш код будет работать или почти работать, если вы исправите проблему if
и обработаете другой случай, который я упомянул.