だから私は、私が求めていたこの質問から学んだ上に追加します。これは私がするかどうかについて考えるようになったハイブリッド機能/オブジェクト指向言語:メソッドまたは方法や種類
F# Records: Dangerous, only for limited use, or well used functionality?
私はメソッドやレコード(?)とメソッドでタイプを使用する必要があります。たとえば、これは私が作るかもしれない典型的なタイプです:
(* User Interaction Start *)
type UserInteraction public() =
member public x.CreatePassword(originalPassword) =
if String.IsNullOrEmpty originalPassword then
raise(new ArgumentException "CreatePassword: password is null or empty")
let hashUtility = new HashUtility();
hashUtility.CreateHash originalPassword
私はこれを見ることができる問題があることが許可されているため、そのUserInteractionタイプ内の何かが可変である可能性がありますです。レコードタイプでは、わかっている限り、それらは不変であることが保証されています。
レコードタイプのみを取り込むか返すメソッドを持つモジュールを設計する方が良いでしょうか、メソッドチェインを使用してさらに一歩進んでください。
達成したいことは何ですか? – pad
機能的な世界で自分自身をより良くする。私は関数型プログラミングにはかなり新しいので、私はそれを試しているにもかかわらず、F#が許すので命令的な規則を強制するだけであるかどうか把握しようとしています。 –
Scalaの質問はどうですか? ScalaはF#レコードに正確に類似したものを持っておらず、 'val'や' var'を宣言することで、何かが変更可能か不変かを簡単に制御することができます。 (また、あなたがそれを十分に頑張れば、どこかでいつでも可変状態を隠すことができます。) –