일기:2024년 10월 8일

Posted on October 8, 2024

Essentials of Programming Languages

프로시저 remove-first는 다음과 같이 구현할 수 있다.

;; remove-first : Sym X Listof(Sym) -> Listof(Sym)
;; usage: (remove-first s los) returns a list with
;;        the same elements arranged in the same
;;        order as los, except that the first
;;        occurrence of the symbol s in removed.
(define remove-first
  (lambda (s los)
    (if (null? los)
      '()
      (if (eqv? (car los) s)
        (cdr los)
        (cons (car los) (remove-first s (cdr los)))))))

Land of Lisp

Land of Lisp의 작가는 강력한 프로그래밍 언어는 표현력이 좋아야 한다고 말한다. 표현력이 좋으려면 아래 두 가지 조건을 만족해야 한다고 한다.

그런데 보통은 이 두 가지 기능이 서로 상충하기 때문에 둘 다 모두 만족하는 언어는 많지 않다고 한다. 왜냐하면 처음부터 다양한 기능을 포함하려면 언어가 복잡해진다. 복잡한 언어는 사용자가 원하는대로 다루기가 어렵다.