したがって、本質的に私が引き受けたいプロジェクトはSVGエディターです。アプリケーションレイアウトにXAMLを利用できるので、WPFを使用したいと思います(そのデザイナーはとても気の利いたものです)。残念ながら、私は.NETフレームワークをほんの数か月しか使用しておらず、ほとんどのクラス名にまだ慣れていません。
F#は関数型プログラミング言語であり、タプルと組み合わせたF#の再帰とすばらしいリスト操作は私が達成しようとしていることに対してうまく機能するため、F#を使用することが目標でした。そして、目標は、使用可能なドキュメント化されたクラスの膨大なライブラリと例を備えた。
私はすでに this 質問を見てきました。 https://softwareengineering.stackexchange.com/questions/3129/is-there-a-canonical-book-on-f しかし、答えは一般的なF#に対するものであり、すでにC#を知っていると想定しています。これは私には特に役に立ちません。
上記で参照された質問に対する回答としての一番の本は、実世界の関数型プログラミング:F#とC#の例を使用したものでした。しかし、この本の3つ星のAmazonレビューは、かなり過酷で恐らく誇張されているにもかかわらず、私の問題を正しく説明しています。
関数型プログラミングに興味はあるが、F#を学習しようとしているC#ではない場合は、この本を安全にスキップできます。
私はオンラインでWPF F#の例を探しましたが、そこにはさまざまなコードスニペットがありますが、単一のファイルスクリプト.fsxの外部で使用されていることや、それを実証していることは何もありません。
したがって、Microsoftでさえ、F#で.NETを実行する方法の例はあまりありません。私が見つけた例は通常、F#に固有の機能のみです。 F#の基本セクションと高度なセクションを見てください。これらのセクションは、構文を教えるだけの罪を犯していることがわかります。たとえば、MSDN on WPFのLineクラスには、F#のコード例はありません。
F#のコードサンプルタブを下にスクロールすると、
No code example is currently available or this language may not be supported.
利用可能なコード例が非常に少ないため、このプロジェクトを実施するのは難しいと感じています。
私の質問
C#について十分に理解していない場合に、F#を使用してこのプロジェクトにどのように取り組むべきかを理解していただけると助かります。
問題を2つの部分に分けます。
WPFの使用を除外して、F#の基本を学びます。 mutables
とwhile statements
を使用せず、function composition
を使用せずに関数を作成する方法を学びます。これが完了したら、可変を使用して状態を更新する方法を学びます。
John Liaoによる F#によるWPFの学習、およびその逆 を読んで、F#でWPFを使用する方法を学んでください。
F#で好きなコードが見つからない場合は、F#はOCamlの子孫なので、GoogleがOCamlとSVGに対応していることに注意してください。 F#はOCamlをコンパイルできませんが、非常に近く、変換にそれほど時間はかかりません。大量のOCamlをF#に変換しましたが、すべて変換されました。