Opaの背後にある概念をより深く理解しようとしています。特に、私は、MLやHaskellのような差別化された共用体を提供しない(つまり、0以上の値をラップするいくつかのコンストラクタを定義する)ことはできませんが、それらのレコード型と合計型にとどまることには興味があります。この決定は私には完全に意味があります(おそらく私はFPよりもOOPにいるためです)。そして、それは差別化された組合でできるすべてを実装できるようです。Opaは代数的データ型を提供しますか?
しかし、言語でも代数データ型がサポートされているとは言えますか?これは実用的な質問ではなく、用語に関するものです。
BtwのWikipediaには、訂正する必要があります。
Opaは、代数データ型という用語を理解する限り、再帰的、多分抽象的である可能性がある総和と積の型を提供しています。 – akoprowski
代数データ型のそのような定義のリンクを私に与えることができますか?多分、問題はその用語が厳密に定義されていないということです。たとえば、http://foldoc.org/algebraic+data+typeの定義は、(私が理解するように)値はコンストラクタアプリケーションの観点から定義する必要があります。 Opaのケースではありません。 – Milo
私の理解では、代数データ型は製品タイプの合計を提供することに関するものです。私は、コンストラクタとの和の変種をマーキングすることが非常に重要であることを認識していませんでした。 Opaは、代数的データ型(とそれ以上)でできるすべての型システムが可能なので、主に用語論争であると考えていましたが、Opaは修飾されません。 – akoprowski