我有一个包含表达式的变量。例如:(> 1 2),我该如何评价它?
所以我写了这段代码。如何获取 if 语句中的 x 进行评估?目前,x 总是成功,而 if 语句永远不会失败。
(define expand
(lambda (exp)
(cond
((symbol? exp) exp)
((pair? exp)
(case (car exp)
((and)
(if (null? (cdr exp)) '(quote #t)
(if (null? (cddr exp)) (cadr exp)
(let ((x (cadr exp))
(thunk (lambda () (expand '(and ,(cddr exp))))))
(if x (thunk)
`(quote ,x))))))
(else exp)))
(else exp))))
So I wrote this code. How do i get the x in the if statement to evaluate? at the moment, x always succeeds, and the if statement never fails.
(define expand
(lambda (exp)
(cond
((symbol? exp) exp)
((pair? exp)
(case (car exp)
((and)
(if (null? (cdr exp)) '(quote #t)
(if (null? (cddr exp)) (cadr exp)
(let ((x (cadr exp))
(thunk (lambda () (expand '(and ,(cddr exp))))))
(if x (thunk)
`(quote ,x))))))
(else exp)))
(else exp))))
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用
评估
< /a>,例如:Use
eval
, for example: