커먼리습 설정하기, ASDF 시스템 코드를 받기
1. ASDF을 최신 버젼으로 설정한다
(이부분에서 많이 고생했는데) SBCL와 다르게 CLISP, ECL 은 최신 버젼의 ASDF을 내장한걸 패키징해놓지 않았다.
대부분은 문제가 없이 동작하지만, 내가 작성한 커먼리습 시스템에서 실행파일을 빌드할 때 문제가 많았다.
- ASDF 의 최신 버젼을
git clone
해서 적당한 디렉토리에 받는다. make
을 내려받은 ASDF 디렉토리에서 실행한다.- 실행하면
build/asdf.lisp
파일으로 한 파일으로 뭉쳐서 로딩하게 편안한 파일을 생성해준다.
- 실행하면
- 내 커먼리습 구현체의 시작설정파일 맨 앞에 다음처럼 추가한다.
(load "~/local/asdf/build/asdf")
- 여기서 나는
$HOME/local/asdf/
에 ASDF을 받았다고 가정. - 그리고
asdf.lisp
파일이더라도, 마지막에.lisp
확장자는 생략했다.
- 여기서 나는
- ECL은
$HOME/.eclrc
- CLISP은
$HOME/.clisprc.lisp
- 그리고 중요한데, 그 다음에
Quicklisp 초기화 내용이 오도록
한다.
- Quicklisp을 초기화하기 전에 ASDF 최신 버젼이 로딩되어 있는게 더 나을테니까.
- 어차피 위의 (1~3)의 순서대로 ASDF 먼저 설정한 다음에
Quicklisp설치한 다음에
ql:add-to-init-file
실행하면 이런 순서로 추가해준다.
…별거 아닌데, 이거 때문에 빌드한 결과 실행파일이 이상해서 좀 고생했다.
…(Common Lisp의 어두운 면) Equality
오늘은 커먼리습의 어두운 면을 이야기 해볼까. 보통 나는 리습 팬보이니까 리습에 대해 불리한 이야기는 잘 쓰지 않는거 같아서 한번 써보기로 생각했다. 그리고 놀랍게도 이 글의 끝에 가서는 다시 이런 리습의 결점을 리습의 위대함으로 승화시키는 단계까지 끌어가 보도록 하려고함.
뭐 커먼리습의 CLHS - HyperSpec을 읽다보면 비슷한데 아주 약간씩 미묘하게 달라서 지원하는 것들이 있다:
let
map
prog
- …그밖에도 좀 더 있을듯?
이렇게 나열해 놓으면 꽤 무서워 보이지만, 막상 차이를 이해하면 별로 복잡하지도 않아서 나중엔 더 편안해진다. (정말로)
…(소프트웨어 고고학) 어째서 `String#replaceAll`처럼 메서드 경로의 구분자로 `#`을 쓸까?
오늘 아침
다음은 오늘 아침 트위터의 타임라인에서 내가 스쳐본 한 스크린샷의 일부이다:
…뭐에 느낌을 받았냐하면, 바로 저 String#replace(..)
이라는
부분이다. (다른 부분에서는 String.prototype.replace(..)
와 같이
썼는데 굳이 저기서만 갑자기 튀어나온 표기법)
사실 나도 종종 내가 작업한 코드의 문서를 쓰거나2 아니면 다른 사람과 텍스트로 대화를 해야할 때 이렇게 표기를 해왔었다.3
각각의 언어들에서 (내가 생각하는) 저렇게 표기하는 근거들은 다음과 같다:
- Java: https://www.oracle.com/technetwork/articles/java/index-137868.html
@see Component#getGraphics()
JavaDoc안에서 다른 메서드, 필드를 참고로 넣고 싶을 때 이게 표준표기법이고 javadoc도 요렇게 써줘야 링크처리를 해준다.
- JavaScript
- 공식적인건 아닌거 같다. Mozilla MDN을 봐도 그런 표기는 사용 안하는걸로 보인다.
- 예: https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/toString
- Ruby
- Java와 마찬가지로 RDoc에서 강제한다.
- 스택오버플로우: What is the # (sharp, number, pound, hash) sign used for in Ruby?
스택오버플로우: Use a hash character or a dot when referring to methods and fields in software documentation? [closed]에 답변이 있으나 내가 볼 땐 내 가설이 더 확실한 이야기라고 본다.4
…