Maple 16 のオブジェクト
Maple ユーザーは言語にオブジェクトを追加することで、Maple との親和性が非常に高いコードを作成することができます。オブジェクトの概要については、object ヘルプページを参照してください。新規オブジェクトの宣言については、object,create ヘルプページを参照してください。オブジェクトを使用すると、メソッドの実装 (object,methods を参照)、組込みオブジェクトの多重定義 (object,builtins を参照)、標準の Maple 構文で該当するオブジェクトを指定した場合に起動するさまざまな演算子の使用 (object,operatorsを参照) が可能になります。これにより、あたかも Maple の組込みタイプであるかのように、ユーザー定義オブジェクトを Maple に組み込むことができます。次の例では、n を法とした整数を表すオブジェクトを実装します。
module IntMod()
>
|
|
| (1) |
フォームがきちんとプリントされている点に注意してください。
また、既存のオブジェクトを複製することで新規オブジェクトを作成することもできます。 この場合、新しい値を指定しますが、ベースは指定したオブジェクトからコピーされます。
>
|
|
| (2) |
新規作成したこれらのオブジェクトが IntMod クラスのインスタンスであることをテストできます。
>
|
|
| (3) |
ModuleType プロシージャを使用すると、IntMod タイプがベースの指定をサポートしているかどうかを確認できます。
>
|
|
| (4) |
>
|
|
| (5) |
ModInt は '+' 演算子を実装します。この演算子を使って、残りの 5 を法とした整数を生成できます。
>
|
|
| (6) |
>
|
|
| (7) |
>
|
|
| (8) |
>
|
|
| (9) |
>
|
|
| (10) |
+ を実装すると、非整数値を処理対象外とすることで、非整数値もサポートされます。
>
|
|
| (11) |
IntMod は * と ^ 演算子を多重定義します。
>
|
|
| (12) |
式に 0 が含まれる場合、^ の呼び出しは行われません。これは自動簡単化によって呼び出しが妨げられるためです。
>
|
|
| (13) |
>
|
|
| (14) |
>
|
|
| (15) |
>
|
|
| (16) |
>
|
|
| (17) |
>
|
|
| (18) |
ModInt オブジェクトは、変換関数の多重定義も行います。このため、IntMods を整数に変換することができます。
>
|
|
| (19) |
|
Download Help Document
Was this information helpful?