我正在尝试使用“定义语法规则”在球拍中创建自己的 while 循环。我希望它是基于程序的,所以没有辅助函数(即只使用 lambda、let、letrec 等)。
我有这个,但它给了我某种 lambda 标识符错误。
(define-syntax-rule (while condition body)
(lambda (iterate)
(lambda (condition body) ( (if condition)
body
iterate))))
我希望它是这样我可以像普通的while循环一样使用它例如:
(while (x < 10) (+ x 1))
在循环完成后调用它会(应该)返回 10。
如何修复我的代码以执行此操作?