SICP Exercise 4.9

SICP Exercise 4.9

;(for 
;  (define i 0)
;  (< i 10)
;  (set! i (+ i 1))
;  (display i))

;(for <init> <condition> <change> <body>)
(define (for-init exp) (cadr exp))
(define (for-condition exp) (caddr exp))
(define (for-change exp) (cadddr exp))
(define (for-body exp) (caddddr exp))
(define (caddddr x) (car (cddddr x)))

(define (for->combination exp)
  (sequence->exp
   (list
    (for-init exp)
    (list 'define
          (list 'for-iter)
          (make-if (for-condition exp)
                   (sequence->exp
                    (list (for-body exp)
                          (for-change exp)
                          (list 'for-iter)))
                   "undefine-FOR"))
    (list 'for-iter))))

(define (eval-for exp env)
  (eval (for->combination exp) env))

(put 'for eval-for)
    
  
  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值