일기: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의 작가는 강력한 프로그래밍 언어는 표현력이 좋아야 한다고 말한다. 표현력이 좋으려면 아래 두 가지 조건을 만족해야 한다고 한다.
- 다양한 기능을 지원해야 한다.
- 사용자가 원하는대로 구현할 수 있어야 한다.
그런데 보통은 이 두 가지 기능이 서로 상충하기 때문에 둘 다 모두 만족하는 언어는 많지 않다고 한다. 왜냐하면 처음부터 다양한 기능을 포함하려면 언어가 복잡해진다. 복잡한 언어는 사용자가 원하는대로 다루기가 어렵다.