YamaKen
yamak****@bp*****
2006年 1月 26日 (木) 18:21:32 JST
ヤマケンです。 以下のSigSchemeの仕様(正確にはデフォルトコンフィギュレーション) を決定したいと思うので、意見を聞かせてください。 1. '#(0 1 2)形式のvectorにquoteを必須とするか 2. 1.のvectorをconst(immutable)にするか これらはいずれもR5RSでそうしろと書かれていますが、以下のように quote必須、constにはしないのをデフォルトにしたいと思います (Biglooと同じ)。 #define SCM_STRICT_VECTOR_FORM 1 /* disallow quote-less vector literal */ #define SCM_CONST_VECTOR_LITERAL 0 /* parse vector literal as const */ まずquoteの方の理由ですが、以下の2点を確保してコード表現を一貫さ せるためです。私のようにuimからSchemeに入って来る人もいると思う ので、無用に混乱を招かないようにしておきたいです。 ・quasiquoted vectorとの対称性 '#(foo bar) `#(baz ,sym quux) ・quoted listとの一貫性 (list '(foo bar) '#(baz quux)) constの方は利便性とlistとの一貫性のためです。R5RSでは '(a b c) もconstとして扱う事を要求しているんですが、これはstorage-compact ではそもそもビットが足りず実現できないし、書き換え可能listを全て list procedureやlist-copy等で生成するのは繁雑すぎます。vectorも 同様。 ------------------------------- ヤマケン yamak****@bp*****