4

私は現在、Real-World Functional Programming を読んでいますが、カスタム オペレーターの主な利点の 1 つである in-fix オペレーターについて簡単に言及しています。F# でカスタム演算子を使用する場合と使用しない場合の基準はありますか? これに相当する回答を探しています。

参考までに、@JohnPalmer がここから参照している引用を次に示します。

3.8 演算子の定義 </p>

F# 向けのライブラリ設計でカスタム シンボリック演算子を定義することは避けてください。

カスタム演算子は、状況によっては不可欠であり、大量の実装コード内で非常に便利な表記デバイスです。ライブラリの新しいユーザーにとっては、名前付き関数の方が使いやすいことがよくあります。さらに、カスタム シンボリック演算子は文書化するのが難しい場合があり、ユーザーは、IDE および検索エンジンに既存の制限があるため、演算子のヘルプを検索するのがより困難であると感じています。

そのため、通常は、機能を名前付き関数およびメンバーとして公開することをお勧めします。

4

1 に答える 1

3

カスタム中置演算子は、状況によっては便利な機能ですが、それらを使用する場合は、コードを読みやすくするために細心の注意を払う必要があります。そのため、F# 設計ガイドラインの推奨事項がほとんどの場合に適用されます。私が再び実世界の関数型プログラミングを書いていたら、それらは本当に慎重に使用する必要があるため、それらについては少し熱心ではなかったでしょう :-)。

とはいえ、カスタム演算子をうまく利用する F# ライブラリがいくつかあり、それらは非常にうまく機能する場合があります。FParsec (パーサー コンビネーター ライブラリ) は 1 つのケースだと思いますが、多すぎるかもしれません。もう 1 つの例は、 .xmlを使用するXML DSL@=です。

通常、通常のF# ライブラリを作成している場合は、それらを公開したくないでしょう。ただし、ドメイン固有言語を作成している場合は、カスタム オペレーターが役立つ場合があります。

于 2013-03-13T12:12:52.447 に答える