다음 코드가 "Hello, world!"로 표시되도록 rnrs-modified 라이브러리를 어떻게 만들 수 있습니까? (실제로는 틀림없이 더 나은)도r6rs에서 구문 키워드 다시 정의
#!r6rs
(import (rnrs-modified))
(display set!)
또는이 좋은 것 :
#!r6rs
(import (rnrs) (modified)) ;or (import (modified) (rnrs))
(display set!)
는 기본적으로 나는 도서관에서 (하자 람다 설정! 등) 구문 키워드를 재정의 할 수있게하려면 그런 다음 해당 라이브러리를 다른 라이브러리 또는 최상위 프로그램으로 가져 와서 다시 정의 된 키워드를 사용하십시오.
그러나 나는이가 계속 :
module: identifier already imported from a different source in:
set!
(lib "rnrs/main.ss")
(lib "rnrs-modified/main.ss")
수정 rnrs I가 사용하고있는 코드는 다음과 같습니다
#!r6rs
(library (rnrs-modified)
(export (rename (f set!)))
(import (rnrs))
(define f "Hello, world!"))
어떤 아이디어?
업데이트 : 'mzscheme modules'에 대해 this이 발견되었습니다. r6rs 체계를 위해 아닙니다, 그러나 그것이 제안하는 기능은 기본적으로 정확하게 내가 찾고있는 것입니다. 어떻게 r32rs 구성표에서 provide all-from-except
할 수 있습니까?
+1 감사합니다. 나는 이것이 두려웠다. (이런 종류의 끔찍한 일. 다른 모든 바인딩에 대한 내보내기를 추가하는 것이 올바른 옵션이라고 생각하십니까? 문서 나 구문을 파싱 할 수 있으므로 가능합니다.하지만 제 경험상 하드 코딩 된 솔루션은 일반적으로 좋지 않으며 쉽게 깨집니다. 어떻게 생각하십니까? 또한 제한적인 라이브러리 시스템이 r6rs에 선택된 이유는 무엇입니까? 작은 세계 : P – Cam
1. R6RS 표준은 변경되지 않으므로 일단 수출이 정확 해지면 평생 동안 유지 될 것입니다. 2. 왜 그런지는 모르겠다. 한 가지 관점에서 볼 때, R6RS는 오늘날 서로 다른 체계 시스템에서 발견되는 공통 기능에 대한 표준을 정의하는 목표를 가졌습니다. 일반적인 모듈 기능 중 무엇입니까? 마지막 R6RS 코드에서 필자는로드 및로드 기능을 수동으로 내 보냈습니다. all-from- * 생각할 필요가없는 것처럼 보입니다. – grettke