Racket 입문: Lisp으로 직접 언어를 만들어 보자
A Friendly Introduction to Racket

1958년에 탄생한 Lisp는 코드가 곧 데이터인 '동형성(homoiconicity)'이라는 독특한 철학을 가진 언어입니다. 이 글은 Lisp의 역사부터 Scheme을 거쳐 Racket으로의 진화, 그리고 실제 사용 사례를 간략히 소개합니다. 설치부터 기본 문법, 리스트 처리, 고차 함수, 재귀, 매크로를 통한 언어 확장까지 다루며, 독자가 직접 Racket으로 자신만의 언어를 만들 수 있도록 안내합니다. Lisp의 사고방식을 배우고 싶은 초보자에게 친절한 입문서 역할을 합니다.
Lisp은 배울 가치가 있는 언어입니다. 마침내 이해하게 되면 얻을 수 있는 깊은 깨달음의 경험 때문이죠.
HN 토론
166- GregBuchholz
제 첫 언어는 1980년 CMU에서 배운 파스칼이었어요... 곧이어 CS/AI 과목에서 LISP, EE 과목에서 C를 배웠죠. 그 당시 저는 GLS가 작업한 MIT 버전인 MacLisp의 열렬한 팬이었어요(소스 곳곳에서 그의 주석을 볼 수 있었죠). 물론 GLS는 Scheme으로 넘어가서 클로저에 대한 몇 가지 결정적인 논문을 썼습니다. 네, 그건 PC가 보편화되기 전, 아주 오래전 일이에요. (C++는 한참 나중에 나왔는데, 저는 팬이 아니었어요. 그때 C의 ++ 버전이 강제되었다면 저는 하드웨어에 머물렀을 거예요.)
GLS는 80년대 초에 CMU로 옮겼어요... 그에게 '비교 프로그래밍 언어' 수업을 들었던 기억이 나네요. 좋은 선생님이었고 인상적인 분이었어요. 당연한 것 외에도 그 수업에서 SNOBOL과 APL도 다루었죠. 추억이네요 :-)
- SA9G
> 어떤 특별한 문법도 없음.
(list '(1. . #\#)
-5/6+7.s-8i
`(1 ,@2)
1@1 ;흠, unquote splicing 콤마가 없네 ;-)
10# ;놀랐나요?
(list #i+1 +1i 1+i) ;복잡한가요, 복소수인가요?
#e-1e10i ;올드 맥도날드?
"(* 9 10)" #())
- M0THXYZ
> '디지털 서커스' (8화, "hjsakldfhl")에서 Kinger가 Caine을 리셋하려고 터미널을 열 때, Caine(1996년에 만들어진 창의적 AI)이 Lisp으로 프로그래밍된 것을 볼 수 있습니다. 파일 이름은 말 그대로 Caine-core.lisp입니다.
좋은 디테일이네요. 9화에서 Caine이 돌아오는 이유를 설명해 줍니다: Lisp의 연속(continuation)은 우아한 오류 복구를 가능하게 합니다.
- M0THXYZ
Racket을 좋아하는 사람으로서, 이것은 친절한 소개가 아닙니다. 스피드런이에요.
'친절한' 소개라면 lambda가 무엇인지 안다고 가정하지 않을 거예요.
'친절한' 소개라면 문법 규칙이 등장하지 않을 거예요. 전혀요.
- perrygeo
언어 자체는 흥미롭지만, 안타깝게도 실제로 사용하는 사람은 거의 없습니다. 아마도 배포 옵션이 번거롭기 때문일까요? 네이티브 독립 실행형 실행 파일을 만들 수 있다면 사용률이 높아질 거라고 생각합니다.