Scheme

hongminhee의 이미지

Scheme으로 검색해 보았더니…

Scheme으로 검색해 보았더니 주로 “초보자/입문자에게 가르치기 적당한 언어” 같은 주제의 글타래가 많이 나오네요. 그래서 쭉 보았더니 실제로 Scheme을 추천하는 사람들이 많군요. 뭐, 그냥 그렇다구요. ㅎㅎㅎ

bowme의 이미지

혹시 Scheme 공부 하시는 분 있으신가요?

한달 정도 전부터 Scheme을 공부하고 있습니다. 그냥 취미로 시간날때 취미로 하고 있는데요 이거 책이나 자료를 구하는게 쉽지 않네요. "The little schemer"라는 책이 얇고 내용도 재미있어서 부담없었는데 혹시나 다른 분들은 어떻게 공부하시는지 궁금합니다. Scheme을 보다가 C/C++을 보면 문법이 너무 어려워 보입니다.

feanor의 이미지

Revised^6 Report on Scheme

Scheme 프로그래밍 언어의 현재 표준은 보통 R5RS라고 줄여 부르는 Revised5 Report on the Algorithmic Language Scheme입니다. 1998년에 발표되었고, 멋진 HTML 버전이 있습니다.

현재 Scheme의 다음 버전 표준을 만들기 위한 노력이 진행중에 있는데요, 얼마 전에 "중간 보고서"가 나와서 관심있는 분들 읽어보시라고 여기 소개합니다:

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로 입력을 받고 출력을 하도록 바꿔보도록 하겠습니다.

semmal의 이미지

미분하는 프로그램 1

Structure Interpretation of Computer Programs는 프로그래밍 입문서입니다.

입문서인데도 불구하고 프로그래밍 전반에 대한 기본 개념과 고급 기술까지 방대한 분야를 설명하고 있습니다.

책을 따라가다보면 여러가지 예제를 만나게 되는데, 그 수준은 입문서라고 보기 힘들정도의 고난이도를 자랑합니다.

지금 만드는 미분하는 프로그램은 그나마 쉬운 편에 속하죠.

Scheme 구독하기