ぱたへね

はてなダイアリーはrustの色分けができないのでこっちに来た

Lisp in Small Pieces Exercise 1.2 evlis

evilsの最後の再起が無駄なのでなくしましょう。

修正前

(define evlis
  (lambda (exps env)
    (if (pair? exps)
        (let ((arg1 (evaluate (car exps) env)))
          (cons arg1 (evlis (cdr exps) env)))
       '())))

修正後

;exer 1.2
(define evlis
  (lambda (exps env)
    (let ((arg1 (evaluate (car exps) env)))
      (if (= (length exps) 1)
          (cons arg1 '()) 
          (cons arg1 (evlis (cdr exps) env))))))