15

私は便利な関数の独自の小さなライブラリを作成しており、Phobos の命名規則に従おうとしていますが、本当に混乱しています。物事がどこに収まるかをどうやって知ることができますか?

例:

foldRightPhobosのような (基本的には逆方向の) 関数があった場合reduce、どのモジュールでそれを見つけることができますか?

私はいくつか考えることができます:

  • std.algorithm:アルゴリズムを表現しているから
  • std.array: 配列で使用する可能性が高いため
  • std.container: 単一のオブジェクトではなく、コンテナーで使用されるため
  • std.functional: 主に関数型プログラミングで使われるため
  • std.range: 範囲にも作用するため

しかし、どれが良い選択になるかはわかりません.少なくとも3つについて説得力のある議論をすることができます.

コンベンションは何ですか?

4

1 に答える 1

17
  • std.algorithm: はい、reduce!fun(retro(r)) のように実装できます

    このモジュールは、シーケンスで実行されるアルゴリズムを指定します

  • std.array: いいえ、他の範囲でも実行できるためです

    これらは組み込み配列でのみ実行されるヘルパー関数です

  • std.container: データ構造 (ツリーセットなど) を定義していないため、いいえ

    これは、言語に組み込まれていないデータ構造を定義します (現時点では、リンクされたリスト、バイナリ ツリー、およびメモリ管理の観点から決定論的な配列)。

  • std.functional:関数ではなく範囲で動作するため、いいえ

    これは関数を取り、別の関数を返します

  • std.range: いいえ、範囲を定義しないか、範囲を反復する別の方法を提供しない

明確な構造の欠如は、phobos ライブラリ TBH に対する私の不満の 1 つですが、ドキュメントの最初の段落を実際に読むと、関数を配置する場所がかなりわかるはずです。

于 2011-08-07T21:16:48.607 に答える