[Gauche-devel-jp] Re: S式コメントと読み込み時コンストラクタ

アーカイブの一覧に戻る

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
>



Gauche-devel-jp メーリングリストの案内
アーカイブの一覧に戻る