F# 6 の新機能について教えてください。わかりますか?

F# 6 は、F# をよりシンプルかつパフォーマンス的にすることを目的としています。これは、言語設計、ライブラリ、ツールに当てはまります。長期的な言語進化の主な目標は、ユーザーを驚かせたり、採用への道において不必要な障害となったりする言語のコーナーケースを排除することです。私たちは、このリリースで F# コミュニティと協力して、F# 言語をよりシンプルでパフォーマンスが高く、学習しやすいものにすることに興奮しています。

F# を高速化し、相互運用性を高めるタスク {...}

F# で最も要求されている機能 (そしてこのリリースで最も重要な技術機能) の 1 つは、非同期タスクの作成をより簡単にし、パフォーマンスを向上させ、C# などの他の .NET 言語との相互運用性を高めることです。以前は、タスクの作成に必要な .NET タスクが作成され、 を使用して呼び出されていました。F# 6 では、 を直接使用してタスクを作成し、それを待機できるようになりました。たとえば、.net 互換のタスクを作成する次の F# コードについて考えてみましょう。async {…}Async.AwaitTasktask {…}

このコードは次のようになります。

let readFilesTask (path1, path2) =
   task {
        let! bytes1 = File.ReadAllBytesAsync(path1)
        let! bytes2 = File.ReadAllBytesAsync(path2)
        return Array.append bytes1 bytes2
   }

の組み込みサポートは F# コードのいたるところに存在するため、名前空間を開く必要はありません。task {…}

タスク サポートは、以前は優れた TaskBuilder.fs および Ply ライブラリを通じて F# 5.0 に提供されていました。これらは、F# 6 でのサポートの設計をガイドし、テストの重要なソースを提供します。これらのライブラリの作成者は、F# 6 の設計に直接的または間接的に多大な貢献をしました。コードを組み込みサポートに移行するのは簡単です。ただし、いくつかの違いがあります。組み込みサポートとこれらのライブラリでは、名前空間と型推論が若干異なり、追加の型注釈が必要になる場合があります。これらのコミュニティ ライブラリは、明示的に参照され、各ファイルで正しい名前空間が有効になっている場合は、引き続き F# 6 で使用できます。

使用法は と非常に似ており、両方ともサポートされています。使用すると次のような利点があります。task {…}async {…}task {…}async {…}

  • パフォーマンスがはるかに優れています。task {…}
  • ステッピング トレースとスタック トレースをデバッグする方が良いでしょう。task {…}
  • タスクを予期または生成する .NET パッケージとの相互運用が容易になります。 

F# を学習しやすくする: expr[idx] によるインデックス作成 

F# は、F# 5.0 まではインデックス構文として使用されてきました。この構文は、OCaml で文字列インデックス検索に使用される同様の表記法に基づいています。F# を学習している人、または F# を初めて見る人からの繰り返しのフィードバックに基づいて許可されており、ドット表記によるインデックス付けは業界の標準的な慣行と不必要に異なります。ここで F# を分岐させる必要はありません。expr.[idx]expr[idx]

これは重大な変更ではありません。警告なしでデフォルトで使用されます。ただし、この変更に関連するいくつかの情報メッセージが出力され、コードの明確化が提案され、オプションでさらにいくつかの情報メッセージをアクティブにすることができます。たとえば、オプションの infowarn() をアクティブにして、表記法の使用のレポートを開始できます。

F# をより統合する: "as" パターン

F# 6 では、「as」パターンの右側をパターン自体にすることができるようになりました。これは、型テストによって入力に対してより強力な型付けが行われる場合に重要です。

F# をより均一にする: インデント構文の改訂

F# コミュニティは、F# 6 での F# 言語の統一性を高めるいくつかの重要な改善に貢献しました。これらの中で最も重要なのは、F# によるインデント対応構文の使用に関するいくつかの矛盾と制限の除去です。RFC FS-1108 を参照してください。これにより、F# 4.0 以降、F# ユーザーによって強調された 10 の重要な問題が解決されます。

F# の高速化: リスト式と配列式のパフォーマンスとデバッグが向上しました。

F# 6 では、リスト式と配列式を生成するためのコンパイルされたフォームが 4 倍高速になりました (詳細なプル リクエストを参照)。生成リストおよび配列式もデバッグを大幅に改善します。

F# をよりシンプルかつ相互運用可能にする: 暗黙的な変換

F# 6 では、RFC FS-1093 で説明されているように、F# での追加の「暗黙的」変換と「型指定」変換のサポートが有効になりました。

この変更により 3 つのことが達成されます。

  1. あまり明示的でない前処理が必要
  2. 必要な明示的な整数変換が少なくなる
  3. まさにファーストクラスのサポート。NET スタイルの暗黙的な変換が追加されました

おすすめ

転載: blog.csdn.net/ohpppp/article/details/130872551