2015-01-15 2 views
6

Common Lisp에는 분명히 특정 양식에 대한 단축키 역할을하는 몇 가지 특수 문자가 있습니다. 'x(quote x)을 의미합니다. #'f(function f)을 의미합니다. 나는 그것들 (backtick뿐만 아니라)이 유일한 것이라고 생각했지만 그때 나는 #()에 대해 배웠다. 그것은 분명히 벡터이고, 바로 오늘 누군가가 #.을 언급했다. 이것은 평가 시간에 뭔가를하는 것으로 보인다.Common Lisp 특수 단축키 문자

시도해보십시오. 어떤 접두사 기호가 무엇을 의미하고 무엇을하는 지에 대한 포괄적 인 목록을 찾을 수없는 것 같습니다. 이것은 구현에 결정을 내리기 위해 남겨진 것입니까, 아니면 누군가가 이러한 단축키를 포괄적으로 나열하는 표준 어딘가를 가리킬 수 있습니까?

+0

표준에는 포괄적 인 목록 만 있지만 언제든지 새 매크로 문자를 정의 할 수 있습니다. –

+0

그게 내게 소식이야. 내 자신을 정의하기 위해 내가해야하는 전화의 이름은 무엇입니까? –

+2

나는 대답을 모으고 있지만, ** [Lisp에서 **]에서 [17 매크로 읽기] (http://dunsmor.com/lisp/onlisp/onlisp_21.html)를 살펴 보는 것으로 시작하십시오. 또한 [내 대답] (http://stackoverflow.com/a/19321377/1281433) [기호 매크로로 (와) 같이 작동하는 기호를 정의하는 방법?] (http://stackoverflow.com/)을 참조하십시오. q/19319277/1281433) 도움이됩니다. –

답변

9

HyperSpec은 2.4 Standard Macro Characters으로, "준수 구현에서 처음 정의 된 매크로 문자"를 열거합니다. set-macro-character을 사용하여 자신을 정의 할 수 있습니다.이 유형은 '에 "접두사"가 없으며 디스패치 문자 (일반적으로 #)가 접두사로 사용되는 유형을 처리하는 set-dispatch-macro-character과 같은 유형을 처리합니다.

HyperSpec 외에도 Paul Graham의 의 에서 Lisp이 도움이 될 수 있습니다. 이는 '의 구현으로 시작합니다. 즉, (quote ...)으로 확장되는 매크로 문자입니다. How to define symbols that will work like (and) by symbol macro?에 대한 답변도 유용합니다. 집합 매크로 문자의 일부 용도가 있습니다.