ハッシュテーブルをエクスポートするライブラリです。また、ライブラリには、ハッシュテーブルを移入表現が含まれていますライブラリーから移入されたハッシュテーブルのエクスポート
(library (abc-1)
(export tbl)
(import (rnrs))
(define tbl (make-eq-hashtable))
(hashtable-set! tbl 'a 10)
(hashtable-set! tbl 'b 20)
(hashtable-set! tbl 'c 30))
ここでハッシュテーブルを移植するために使用することができます手順をエクスポートするライブラリの別のバージョンです:
(library (abc-2)
(export tbl init-tbl)
(import (rnrs))
(define tbl (make-eq-hashtable))
(define (init-tbl)
(hashtable-set! tbl 'a 10)
(hashtable-set! tbl 'b 20)
(hashtable-set! tbl 'c 30)))
はそれが取るために悪いフォームを考えられています最初のアプローチは?私。任意の式も実行するライブラリを持っていますか?このアプローチには欠点がありますか?
関連する問題ライブラリでは、定義の後に非定義式を記述する必要があります。この制約を回避するには、私はこのマクロを使用しています。たとえば
(define-syntax no-op-def
(syntax-rules()
((_ expr ...)
(define no-op
(begin
expr
...)))))
を:再び
(define t0 (make-eq-hashtable))
(no-op-def
(hashtable-set! t0 'a 10))
(define t1 (make-eq-hashtable))
(no-op-def
(hashtable-set! t1 'b 20))
、この回避策を経由して表現や意味を散在するが欠点ですか?