SICP

semmal의 이미지

미분하는 프로그램 4 - Object-Oriented Programming

OOP스타일로 메시지 패싱을 사용하는 형태로 작성했습니다.

Scheme과 OOP 언어와의 차이라면 self(또는 dispatch)의 동작이 자동이냐 아니냐의 차이입니다.

원래 Scheme이 Cuncurrent OO언어인 Actor의 의미 모델을 설명하기 위해 개발되었기 때문에, 이런 방법이 확실히 이상한 꼼수는 아닙니다.

만약, OOP 스타일로 짜여진 미분 프로그램에 공식을 추가하고 싶으면 오브젝트만 하나 더 만들면 됩니다.

semmal의 이미지

미분하는 프로그램 3 - Infix 로 입출력하기

입출력을 infix로 하기 위해서는 각 selector에서 첫번째 심볼을 골라내는 car를 cadr로, 두번째 심볼을 골라내는 cadr을 car로 바꿔 처리합니다.

또한, constructor에서 연산자를 첫번재가 아닌 두번째 위치로 지정해주면 됩니다.

negative의 경우에는 연산자가 앞에 있기때문에 거의 그대로 처리해주면 됩니다.

semmal의 이미지

미분하는 프로그램 2 - 출력을 개선하기

저번에 만들었던 미분하는 프로그램은 더하기와 곱하기만 지원하고 출력이 그리 보기 좋지 않았습니다.

아래는 음수, 빼기, 거듭제곱의 경우까지 처리하고, 출력까지 더 좋게 만든 형태입니다.

분리하고 합치는 간단한 규칙 몇 개만 추가하면, 이런 공식은 얼마든지 붙여쓸 수 있습니다.

다음에는 prefix가 아니라 infix로 입력을 받고 출력을 하도록 바꿔보도록 하겠습니다.

SICP 구독하기