多項式を操作するためのパッケージを作成して、Adaパッケージを作成する水域をテストしたいと思います。多項式は幅広いクラスの代数的構造に対して定義できるので、これを反映するために、パッケージを汎用にして、浮動小数点数、整数、またはその他の数値サブタイプで使用できるようにします。
ここで、Adaの型システムがどのように機能するか、またはそのパッケージシステムがどのように機能するかについてはほとんど知りません。ウェブ上には初心者向けの優れたAda情報が不足しているようです。そのため、このあまり初心者向けではないWikibooksの記事から、私ができる知識を収集する必要があります。
このページには、タイプ階層に関する情報があります。それに基づいて、私の多項式パッケージのベースとなる妥当なタイプは、Scalar
明らかにそれが算術演算が定義されているタイプであるように思われます。だから、これは私が試みたものですpolynomials.ads
:
generic
MAX_DEGREE : Positive;
type Element is new Scalar;
package Polynomial is
type Polynomial is Array (0 .. MAX_DEGREE) of Element;
end Polynomial;
"Scalar" is undefined
ただし、これはGNATからのエラーをネットするだけです。
これまでのところ、私は本当にハーフブラインドの周りを感じていましたが、実際にはこれらのものがどのように機能するのかわかりません。解決する必要があると思われる大きな誤解があると思われる場合は、教えてください。おそらく最も簡単なのは、私が学ぶことができる例polynomial.ads
とpolynomial.adb
コードを提供することです-ちょうど多項式型の定義(一般的な最大次数と要素型を使用)と2つの多項式を追加するような単純な例関数のように、私はどのように一般的であるかを見ることができます関数は機能します。
PS:ある種関連していますが、ユーザー定義型の属性を定義する方法はありますか?