公正な警告、私は関数型プログラミングは初めてなので、多くの悪い仮定を抱くかもしれません。
私は代数型について学んでいます。多くの関数型言語にはそれらが含まれているようで、パターンマッチングと併用するとかなり便利です。ただし、実際にどのような問題を解決しますか?次のように、C#で一見(一種の)代数型を実装できます。
public abstract class Option { }
public class None : Option { }
public class Some<T> : Option
{
public T Value { get; set; }
}
var result = GetSomeValue();
if(result is None)
{
}
else
{
}
しかし、これはオブジェクト指向プログラミングのろくでなしであることにほとんどの人が同意すると思うので、絶対にやるべきではありません。それで、関数型プログラミングは、このスタイルのプログラミングをあまり目立たないようにする、より簡潔な構文を追加するだけですか?他に何が欠けていますか?
class ThirdOption : Option{}
たnew ThirdOption()
場所を定義してあなたに与えるとどうなりますSome
かNone
?
data Maybe a = Just a | Nothing
(例の場合と同じdata Option a = Some a | None
です):3番目のケースを事後的に追加することはできません。あなたが示した方法でC#で合計タイプをエミュレートすることはできますが、それは最もきれいではありません。