- 가장 많이 쓰이는 Common Lisp 환경: Emacs + SLIME
- 이게 Portacle이 포함하고 있는 것이다. 👉 macOS에서 Protacle 설치 삽질기
- 나도 가장 애 먹은 부분. 라행이 요즘은 구현제가 많이 나와 있고 설치도 쉽다. 일단 Portacle 추천.
- Emacs
- SLIME
- SBCL[Steel Bank Common Lisp)
- 이 책의 소스는 Common Lisp을 만족하는 시스템에서는 대부분 돌아다고 함.
- Lisp을 배우려면 결국 Emacs에도 익숙해져야 하는가.
- Emacs 튜토리얼을 통해서 익숙해지는 게 좋겠다.
C-h t
. C
Ctrl,M
Meta[Alt, Command).- macOS에서는 META 키는 Optoin이다!
- 그 밖에도
C-h i
,C-h k
,C-h ?
등 다양하다. - Emacs에서 버퍼 스위칭
C-x b
- Common Lisp의 REPL(Read, Evaluate, Print Loop)은
CL-USER
. - REPL에서 Lisp의 값은 조사하고 바꾸고 함수도 재정의할 수 있다.
- Emacs는 Lisp의 REPL과 밀접한 관계를 갖고 있다.
- 텍스트 에디터에 있는 사항이 아마도 REPL 에 바로 반영되는 게 아닌가 싶다. 이건 나중에 확인 필요.
- Lisp의 가장 간단한 표현식은 숫자.
Lisp 구현채 선택
Lisp 실행하고 시작하기
마음을 편안히: 대화식 프로그래밍
REPL에서 실험해보기
10
10
10
같은 것.(+ 2 3)
5
( )
에 들어 있는 모든 것은 리스트이다.(+ 2 3)
에서+
은 심볼,2
,3
은 값이다. 세 개의 요소를 갖는다.
+
는 함수의 이름,2
,3
은 인자로+
에 전달.+
는 덧셈 함수로 결과값 5를 내놓는다.
Lisp 스타일의 "Hello, World!"
"Hello, world"
"Hello, world"
(format t "Hello, world")
Hello, world
NIL
format
은 Common Lisp에서 문자열을 포맷하는 함수. 첫 번째 인자로 t
(참)를 넘기면 문자열을 표준 출력으로 표시하겠다는 말이다.format
은 아무것도 내놓지 않는(NIL
)다.defun
을 사용한다.(defun hello-world () (format t "Hello, world"))
HELLO-WORLD
-
를 이용해서 단어를 구분하고 영문으로 짓는다.hello_world
,helloWorld
등은 관례에 어긋난다는 뜻.- 음... 그럼, 한글로는 이름을 지을 수 없나? 만약 Lisp이 유니코드를 지원하고 UTF-8을 지원하는 상태에서 한글로 이름을 지을 수 있으면 정말 대박일 것 같다.
(defun 함수이름 (인자리스트) 함수몸체)
format
이 화면에 문자열을 출력하는 부수 효과(side effect)가 있듯이, defun
은 함수를 만드는 부수 효과가 있다. 그리고 그 함수를 리턴값으로 내놓는다. 여기서는 HELLO-WORLD
.( )
에 묶어서 쓴다.(hello-world)
Hello, world
NIL
작업 저장하기
- 새 파일 만들기:
C-x C-f
- 파일 저장하기:
C-x C-s
- REPL로 돌아가기:
C-c C-z
defun
컴파일하기:C-c C-c
slime-compile-defun
- 닫는 괄호 삽입하기:
C-c C-q
slimie-close-parens-at-point
.lisp
, .cl
사용. (Common Lisp)