我有一个包含表达式的变量。例如:(> 1 2),我该如何评价它?

发布于 2024-09-28 09:10:59 字数 514 浏览 3 评论 0原文

所以我写了这段代码。如何获取 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

就此别过 2024-10-05 09:10:59

使用评估< /a>,例如:

(if (eval x (null-environment 5))
    (thunk)
    `(quote ,x))

Use eval, for example:

(if (eval x (null-environment 5))
    (thunk)
    `(quote ,x))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文