[Anthy-dev 2860] Re: r5rs: ドキュメント形式

Back to archive index

YamaKen yamak****@bp*****
2006年 4月 7日 (金) 01:17:00 JST


At Thu, 6 Apr 2006 07:22:17 +0900,
mover****@hct***** wrote:
> 基本的にはr5rsを横に置きながら、Gaucheのドキュメントを拝借しています。
> texinfoファイルに特に明示が無い場合はCOPYINGと同じライセンスで良いん
> でしょうかね。ちょっとここら辺詳しくないので教えて頂けると助かります。

基本的にそれでいいと思いますが、GFDLのような明確なライセンスが付
加されていない場合は大規模に流用させてもらうなら著者本人に聞いて
クリアにしとくのが安全じゃないでしょうか。

> ドキュメントの出来ていそうなGNU Guileも見てみましたが、こんなもんすよ。
> http://www.gnu.org/software/guile/docs/docs-1.8/guile-ref/List-Mapping.html#List-Mapping

十分よくできてると思いますが、何が足りないでしょうか。mapには実
行例があればより良いとは思いますが。

それよりも、「こんなもん」という発言からも感じられるんですが、
R5RSやSRFIのドキュメントを自前で書く事の危険性に対する認識が甘く
はないでしょうか。以下にfor-eachを例として示します。

Guile:
----------------------------------------------------------------
Scheme Procedure: for-each proc arg1 arg2 ...

Like map, but the procedure is always applied from left to
right, and the result(s) of the procedure applications are
thrown away. The return value is not specified.
----------------------------------------------------------------

Gauche:
----------------------------------------------------------------
Function: for-each proc list1 list2 

[R5RS] Applies proc for each element(s) of given list(s) in
order. The results of proc are discarded. The return value of
for-each is undefined. When more than one list is given,
for-each terminates as soon as one of the list is exhausted.
----------------------------------------------------------------

SigScheme:
----------------------------------------------------------------
Function: for-each proc list1 list2 ...

[R5RS] Applies proc for each element(s) of given list(s), but
the result(s) of proc are discarded.  The return value of
for-each is undefined.
----------------------------------------------------------------

SigSchemeの記述はGaucheからの改変ですが、"in order"という極めて
重要な仕様を(恐らく不注意から)削除してしまったため、関数リファレ
ンスとして必要な情報が得られない欠陥品になってしまっています。
Guileでもこの仕様は明確に記述されています。この例では仕様の記述
漏れ程度で済んでいますが、相当注意深くR5RSとSigSchemeのコードの
双方を読み込みながら作業を進めないとSigScheme固有の仕様をR5RSに
一般化してしまうような嘘の記述が入り込む可能性も低くありません。

このような品質の文書をSigSchemeやuimのリファレンスとして配布した
場合、特に初めてSchemeを学ぶ人々に誤った知識を与えてしまう事にな
り、善意でやったとしても世の中に害毒を撒き散らす結果になってしま
います。

これを回避するには、既存の一定の品質が期待できる文書を極力手を加
える事なくSigScheme向けに調整するしか手はないと思います。この場
合、良かれと思って文章に手を加えるのはささいな記述でも厳禁です。


というわけで、私としては以下の手順での仕切り直しを強く希望します。
次善の策としてR5RSとSRFIのリファレンスは提供しないというのもOKで
す。

1. 由来や品質が不明確な現在の文書を一旦全部破棄
2. 元になる文書を選定し、一切手を加えない形でリポジトリに入れる
3. SigScheme向けに改変する

2.はオリジナルの最新版と差分を取ったりSigScheme側で誰がどのよう
な改変を行ったか把握するために必要です。CVSのvendor branchのよう
な運用がベストだと思います。

楽しくない話になっちゃいましたが、なあなあで済ませとくと後々悲劇
になると思うのであえて攻撃的な言葉も使って私の問題意識の大きさを
表現させてもらいました。こんなんばっかですいません。

> On Thursday 06 April 2006 06:10, YamaKen wrote:
> > 今diff見ましたが、変更の感じからしてcoreprocedures.texi等は何か
> > 既存の文書を元にして書いてますよね? であれば元文書のライセンスと
> > copyrightの表示をお願いします。
> >
> > それからfor-eachやmapの説明等が新規に加わってますが、R5RSとSRFI
> > の文書については他のScheme実装のよくできたドキュメントを探してき
> > てほぼそのまま拝借、というわけにはいかないんでしょうか。

-------------------------------
ヤマケン yamak****@bp*****



Anthy-dev メーリングリストの案内
Back to archive index