문제

그것은 모든 유례를 계획 define-syntax 에 ELisp?에 define-syntax 지정할 수 있습니다 몇 가지 키워드에서 elisp defmacro 것 나.편집:인지 않는 하나 이해 당신 잘,또는 나의 질문에 명확하지 않습니다.에서 체계를 정의 매크로 예약어아

(반복 for a in 일부 목록

(반복 while

에 Emacs Lisp 내가 발견되지 않을 소개하는 방법은 설탕이다.에서 가장할 수 있습니다 매크로,호출해야 하는 다음과 같

(루프-위 목록 (do-물건을 많이...)

가독성 문제

도움이 되었습니까?

해결책

모두 계획 및 Elisp 이크로 시스템입니다."키워드" define-syntaxdefmacro 모두 소개하는 이름을 사용자 정의됩니다.

시간에 매크로,푸에서 사용되는 실제 코드는,말 (foo 1 bar) 매크로를 확장해야 하는 방법을 결정을 다시 주어진 형태로, (foo 1 bar), 으로,단순한 형태를 포함하지 않는 사용자 매크로입니다.The 확장기 매크로 함수를 호출된 시간에 매크로 foo 었을 정의합니다.I.e.그것은 함수를 호출하여 지정한 define-syntaxdefmacro 으로 표현의 형태로, (foo 1 bar).표현할 수 있습으로"syntax"개체 또는 일반 목록(이에서 다른 다른 매크로 시스템).

이 내에 사이에 유사성 define-syntaxdefmacro.

매크로 시스템의 R5RS 계획 및 Elisp 하지만 다릅니다.

매크로 확대기와 관련된 foo 수 R5RS 방식을 지정할 수의 도움으로 syntax-rules.이것은 당신이 사용하는 패턴 매칭을 지정합 재작성 규칙(내부적으로는 구문-규칙을 형성을 평가하는 기능).기타의 차이:매크로 확장 알고리즘에서 R5RS 제도 도움 당신은 전년도 실수로 소개합 이름과 충돌 이름의 다른 부분에서 당신의 프로그램(말 라이브러리에서,당신이 쓰지 않는 당신의 자).역사적으로 하는 방식으로 인해 네임스페이스에서 작동이 특징이 이 문제는 큰 거래에 Lisp,하지만 그것은 가능한 한 실수를 할 수 있습니다.

역사적으로 계획 및 Elisp 모두 사용되는 동일한 매크로를 확장 알고리즘,그러나 다음 웹 페 실험을 시작으로 다른 알고리즘이 있습니다."Syntax-규칙"시스템에 도입되었 R5RS 지만,진화 여기서 멈추지 않았습니다.이러한 일이 모든 현대적인 계획을 구현해야(개의)"syntax-케이스"시스템입니다.

일부를 구현했는 작업이 확장 알고리즘 작품으로 모듈(라켓,R6RS-구현 및 다른 사람)입니다.

에서 짧은 경우에 대해 읽기 방식을 매크로 시스템을 관리하는 검사는 정확하게 변형을 읽고 있다.을 읽는 경우에 대한 제한,그 가능성을 발견하는 텍스트에서(지금 오히려 세) syntax-rules 시스템입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top