Scheme 매크로는 "파생 된"식별자를 만드는 것이 일반적입니다. 예를 들어 R6RS 구문 레코드 API를 사용하여 foo
레코드 유형을 정의하는 방법은 기본적으로 make-foo
이라는 생성자를 정의합니다. 내 자신의 매크로에서 비슷한 것을하고 싶었지만 표준 라이브러리 내에서 깨끗한 방법을 찾을 수 없었습니다."파생 된"식별자를 만드는 가장 깨끗한 방법은 무엇입니까?
(define (identifier-add-prefix identifier prefix)
(datum->syntax identifier
(string->symbol (string-append prefix
(symbol->string (syntax->datum identifier)))))
내가 데이텀에 문자열로 심볼을 변환 (식별자로 가정) 구문 개체를 변환은,의 접두사와 새 문자열을에 해당 문자열로 변환 : 나는이 글을 쓰는 결국 그 심볼을 마지막으로 identifier
과 같은 구문 환경에서 식별자로 변환하십시오.
이 방법은 효과가 있지만 우연히 만지작 거리는 것처럼 보입니다. 이 일을하는 데 더 깔끔하고 관용적 인 방법이 있습니까?