Я пытаюсь реализовать цикл while, используя рекурсию с лямбдой, но я просто не понимаю, как это сделать.Написание цикла while в схеме
Я должен начать с этого лямбда-выражения:
((lambda (x) (x x)) (lambda (x) (x x))
Мой первый вопрос, почему же эта причина «вечная» рекурсии? Я пытаюсь понять, как это работает, но я просто не могу понять.
У меня есть этот код, чтобы пойти после того, как:
((lambda (x) (x x))
(lambda (x)
(if (not (= i 0))
(begin
(display i)
(set! i (- i 1))
(x x))
)))
Этот код вызывает цикл, который печатает с я = п до я = 0, но я не понимаю, это тоже. Если бы кто-то хотел объяснить использование лямбда здесь, я был бы благодарен :)
Редактировать: Я должен использовать это выражение лямбда как свою «отправную точку», и я не хочу использовать макросы (это добровольное упражнение, которое я пытаюсь понять, поэтому я хочу следовать рекомендациям :))
Хотя, как правило, реализуется в виде макроса на схеме , См. Этот более или менее повторяющийся вопрос: http://stackoverflow.com/questions/10968212/while-loop-macro-in-drracket –