(define legal?
(lambda (try legal-pl)
(letrec
((good?
(lambda (new-pl up down)
(cond
((null? new-pl) #t)
(else
(let ((next-pos (car new-pl)))
(and
(not (= next-pos try))
(not (= next-pos up))
(not (= next-pos down))
(good? (cdr new-pl)
(add1 up)
(sub1 down)))))))))
(good? legal-pl (add1 try) (sub1 try)))))
Я пытаюсь выполнить функцию выше. Вот мой ручной звонок. Пожалуйста, проверьте, не включено ли это:Ручной вызов функции в схеме
(legal? 3 '(1 4 8))
(good? '(1 4 8) 4 2)
(good? '(4 8) 5 1)
(good? '(8) 6 0)
(good? '() 7 -1)
#t
Если не правильно, что я делаю неправильно?
@ John, спасибо, что ответили. Я сделал, как вы сказали, но получил: «Все определения были успешно оценены». Никаких шагов не показано. – user134627
@ user134627 Вы «поместили вызов» (legal? 3 '(1 4 8)) 'в качестве последней строки в вашем буфере и нажмите кнопку« step »? –
@ Уилл Несс, я забыл сделать именно это. Большое спасибо! Кроме того, я супер счастлив @ Джон предложил DrRacket. Очень удобно и удивительно. – user134627