gpt4 book ai didi

while-loop - 使用 "define-syntax-rule"制作我自己的 while 循环

转载 作者:太空宇宙 更新时间:2023-11-03 18:59:59 25 4
gpt4 key购买 nike

我正在尝试使用“定义语法规则”在 Racket 中创建自己的 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。

如何修复我的代码以执行此操作?

最佳答案

这是我的 Standard Prelude 中的 while ,以及它的使用示例:

Petite Chez Scheme Version 8.4
Copyright (c) 1985-2011 Cadence Research Systems

> (define-syntax while
(syntax-rules ()
((while pred? body ...)
(do () ((not pred?)) body ...))))
> (let ((x 4))
(while (< x 10)
(set! x (+ x 1)))
x)
10

你可能应该和你的导师谈谈你对 Scheme 的误解。

关于while-loop - 使用 "define-syntax-rule"制作我自己的 while 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42475054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com