首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >元评价器

元评价器
EN

Stack Overflow用户
提问于 2011-02-16 09:32:27
回答 1查看 2.1K关注 0票数 0

我必须用计划来写计划。安静有趣,但情况就是这样。无论如何,这里有一个用我可能使用的语言编写"lambda“表达式的例子,我在编写"Let”表达式时也需要帮助。如何用类似的方式将“让”表达式翻译成lambda?谢谢。

代码语言:javascript
复制
    (define (lambda? exp) (tag-check exp 'lambda))
 
(define (eval exp env)
  (cond  ((number? exp)       exp)
         ((symbol? exp)      (lookup exp env))
         ((define? exp)      (eval-define exp env))  
         ((if? exp)          (eval-if exp env))
         ((lambda? exp)      (eval-lambda exp env))
         ((application? exp) (apply (eval (car exp) env)
                                 (map (lambda (e) (eval e env))
                                         (cdr exp))))
         (else (error "unknown expression " exp))))
 
(define (eval-lambda exp env) 
      (make-procedure (lambda-parameters exp)
                         (lambda-body exp)
                         env))

(define (lambda-parameters exp) (cadr exp))
(define (lambda-body exp) (cddr exp))

(define (make-procedure parameters body env)
  (list 'procedure parameters body env))
EN

回答 1

Stack Overflow用户

发布于 2011-05-15 14:43:22

你只需要编写一个程序就可以转换。

(E1 v1) (e2 v2) .)( => (lambda (e1 e2 .)身体.)( v1 v2 .)

看看SICP第四章。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5014701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档