[Boostjp-dev603] lambda

Zurück zum Archiv-Index

Hoshi Takanori hoshi****@users*****
2003年 3月 7日 (金) 12:03:08 JST


ほしです。

ぼくも lambda 読んでます。まだ 5. の途中ですが、高橋さんから
コメントが出てるので、ぼくも読んだところまで書きます。

# それにしても大作ですねぇ。おつかれさまです。


1. In a nutshell

    # ここは lambda の紹介なので、訳文は他の部分以上に自然な文章に
    # なっているべきだと思います。

「C++ においてのλ抽象の型を実装した」

    form を「型」と訳すと、type と混同しちゃうのでまずいと思います。
    そもそも、form of は訳さなくてもいいような気が...

「この言葉はλ抽象によって無名の関数を定義する関数型言語やλ計算に
  由来する。」

    関係代名詞の前に , がある場合、文の順序はそのままにするのが普通
    だと思います。ので、「この言葉は関数型プログラミングやλ計算に
    由来し、そこではλ抽象は無名の関数を定義する。」かな。

「このライブラリについて説明するにあたって、」

    ちょっと硬い表現ですね。「説明するには」くらいで良いのでは?

    要するに「百聞は一見にしかず」と言いたいわけで、「くどくどと
    説明するよりも、」でもいいかも。

「STL アルゴリズムを呼び出す位置で」

    「STL アルゴリズムを呼び出す式の中で」とした方が分かりやすい
    でしょう。


3.1. Motivation

「さらに、標準 [SGI02] の拡張として、関数の合成操作を含む STL の
  実装もある。」

    [SGI02] の位置ですが、[SGI02] は標準そのものではないので、これは
    まずいでしょう。「拡張」の後ろか、文章の末尾がいいと思います。


3.2 Introduction to lambda expressions

「仮引数から関数の値を計算する式 e x1 ... xn」

    「仮引数 x1 ... xn から関数の値を計算する式 e」ですね。

「関数 boost::bind でラップされる必要がある。」

    lambda は boost::bind とは別に bind 関数 (boost::lambda::bind) を
    持ってるので、これはまずいです。3.2.1 の先頭の boost::bind も同様。

    # boost::bind なんていらないぢゃん。(なみだ)


4.1. Introductory Examples

「_1 = 1 という式は、v の全ての要素に対して 1 を割当てるλファンクタ
  を生成する。」

    この assign は「代入」ですね。他にもいくつか assign を「割当て」
    としているところがありますが、左辺値に値を assign する、という
    文脈ではすべて「代入」にすべきでしょう。

    あと、関係代名詞の前に , がなくても , があるように訳した方が自然
    な文章になる場合もあります。「式 _1 = 1 が生成したλファンクタを
    利用して v の各要素に 1 を代入している。」ってのはいかが?


4.2. Parameter and return types of lambda functors

「しかし、この正確な機能は」

    precise の訳ですが、ここでは「まさに」とすべきでしょう。「まさに
    この機能が C++ におけるλ式の実装において極めて重大なのである。」

「〜である。(詳しくは Section 6 を見よ) 二つめの方法は」

    。と () の順番ですが、逆にした方が良くないですか?


4.3. About actual arguments to lambda functors

「実引数は const でない右辺値ではないということである。」

    cannot be なので、「〜であってはならない」でしょう。訳文としては、
    「実引数には const でない右辺値を指定できない。」かな。

「引数は参照外しのイテレータであり、」

    「引数はイテレータを参照外ししたものであり、」の方が自然では?

    # 個人的には、「参照外し」という言葉は嫌いなんですが、他にいい
    # 言い方もないしねぇ...

「ref と cref は Boost の基本的な目的の」

    general purpose ですが、「汎用の」とか、「一般的な用途の」の方が
    いいと思います。

「参照として引数を格納する方が納得がいく。」

    「引数を参照として格納する方が〜」でしょう。順番を入れ換えると
    意味が変わっちゃいます。


脚注 [1]

「引数に関する一層きめの細かい要求の」

    C++ 規格の std::for_each に関する要求は強すぎるから、もっと緩い
    ものを独自に作っちゃえ、って話しですよね。

    で、「一層きめの細かい要求」だと要求を強める方向だと解釈しちゃう
    (のはぼくだけ?) ので、「引数に関してより適切な要求を持った」の
    方がいいのでは?


5.2.1. Operation that cannot be overloaded

「返り値の型の認識が必要なために、」

    「戻り型に関する要件のために、」かな。


5.3. Bind expressions

「テンプレート引数として明示的に指定される。」

    can があるので、「指定することができる。」ですね。


5.3.4. Function objects as targets

「この機能を特定の関数オブジェクトのクラスに提供する方法がある。」

    ちょっと硬い文章なので、「関数オブジェクトのクラスに変更を加えて、
    BLL が推論できるようにする方法がある。」ってのはいかが?

「返り値の型を単純な typedef で示すためには、二つの重要な制限が必要となる。」

    これは、「返り値の型を単純な typedef で示すことにすると、二つの重要な
    制限が発生する。」でしょう。

「よって、typedef もテンプレートであるはずである。」

    これは、「よって、typedef もテンプレートにする必要がある。」ですね。

「初期のバージョンのライブラリでは、標準ライブラリの仕様をデフォルトで
  サポートしており、」

    これは、「デフォルトでは標準ライブラリの仕様をサポートしており、」
    または、「標準ライブラリの仕様がデフォルトであり、」の方がいいと
    思います。


5.4.1. Nullary lambda functors and ret

「C++ のテンプレートのインスタンス化の働きのために、」

    way が抜けてます。とはいえ、「働き方」ではちょっと変なので、
    「C++ のテンプレートのインスタンス化の仕組みのために、」では
    いかがでしょう?

「BLL は F は result_type typedef を定義していないため、」

    「BLL は F は」ってのはあんまりです。「BLL は、F が〜」などと
    、を入れるのがいいでしょう。


5.5. Delaying constants and variables

「同一のマッピングを実装するλファンクタ」

    「同一のマッピング」だと、もともとあるマッピングと同じもの、と
    いう意味になってしまいます。ここは、「それ自身へのマッピングを
    実装するλファンクタ」とすべきでしょう。

「引数の定数への参照を格納するという点を除いて、」

    「引数への const な参照を格納するという点を除いて、」でしょう。


とりあえずここまでです。残りはそのうち...

# ちなみに、白黒で印刷して読んでたので、赤字に気づきませんでした。
# すみません。

ほし



Boostjp-developer メーリングリストの案内
Zurück zum Archiv-Index