Rui Ueyama
rui31****@gmail*****
2007年 1月 31日 (水) 13:34:49 JST
Shiroさん、 私も(2)のうほうが正しそうに思いますが、#;中の#,の評価を遅延させない といけないのが若干面倒そうです。 a. (#;#1=(a #,(b)) (c)) b. (#;#1=(a #,(b) #1#) (c)) (a)のように#1#が最後まで現れない場合や、(b)のようにコメント内 にのみ#1#が現れる場合には#,(b)を評価してはいけないですから。 面倒とはいえちょっと書けばできそうですが。 On 1/31/07, Shiro Kawai <shiro****@lava*****> wrote: > フラグはSCM_READ_IN_COMMENTではなく、SCM_READ_DISABLE_READ_CTORの > 方が良い気がします。別オプションで#,構文だけ禁止したいって用途があるかも > しれないし (Common Lispのリーダには#.構文を許すか許さないかってオプションが > あります)。 > > それとは別に、S式コメントはsrfi-38 (#0= 構文) とも相互作用を起こすことに > 気づきました。こんな場合です: (#;#1=(a b) (c . #1#)) > > これはsrfi-62には明示的な言及が無いんですが、 > (1) #1=(a b)全体が読まれなかったものとして#1#をエラーとすべきか、 > (2) あるいは登録だけ許して ((c a b)) と読むべきか、 > ですね。srfi-62を素直に読めば(1)と考えられなくはないんですが、 > 実際にsrfi-38を使って出力されたデータが手元にある状態で: > > (#1=(a b) (c . #1#)) > > 最初の(a b)だけをコメントアウトしたいっていう場合に面倒です。 > > 一方、(2)のセマンティクスだと、コメントアウトされる構造内に#,構文が > あった時に困ります。 > > (#;#1=(a #,(b)) (c . #1#)) > > これがあたかも ((c a #,(b))) であるかのように読まれないとなりません。 > > たぶん、利便性を考えると正しいのは(2)のような気がしますが、実装は > (1)の方が簡単ですね。どうしようかな。 > > --shiro > > _______________________________________________ > Gauche-devel-jp mailing list > Gauch****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/gauche-devel-jp >