는이 같은 소위 "현재 환경"분해 할 수 있습니다
(define (get-current-binding-list)
(let* ((e (current-module)) ;; assume checking current-module
(h (struct-ref e 0)) ;; index 0 is current vars hashtable
)
(hash-map->list cons h) ;; return a vars binding list
))
을 당신은 현재 모듈의 목록을 바인딩 변수를 얻기 위해 (GET-현재 결합 목록)을 호출 할 수 있습니다. 이 목록의 각 요소는 기호 및 변수 형식 쌍 (예 : symbol-name. variable-type)입니다. 그래서이처럼 인쇄 할 수 있습니다 : 다음
(define abc 5)
: 을 예를 들어, 당신은 바인딩 VAR을 가지고
(let ((vl (get-current-binding-list)))
(assoc-ref vl 'abc)
)
==>#<variable 9bb5108 value: 5>
이 결과는 변수의 "변수 타입"입니다 "알파벳". 변수 -ref 프로 시저로 값을 얻을 수 있습니다.
그래서 모든 바인딩을 추적하고 무언가를 할 수 있습니다. 코드에서 단순히 var-name 및 var-value를 인쇄합니다.
내 대답은 너무 짧다는 것을 알고 있지만 설명서에 자세한 내용을 찾을 수있을만큼 충분한 정보가 있다고 생각합니다. 희망이 도움이 될 것입니다.
굉장한 답변입니다. 그것의 핵심이'(현재 모듈)'인 것 같아 보이기는하지만, 괜찮습니다. 나는 단지 이해하고 싶다. – drysdam