注意
適当に調べたので,間違っているところがあるかもしれない.
TL;DR
SageあるいはSageMathとは,Pythonを拡張して実装された計算代数システムの一つで,Mathematicaのフリー版代替を目指して様々なオープンソースソフトウェアとして公開されている計算代数ライブラリを統合した開発環境でもある.
対象の構造と独自の定義
数学で扱われる対象の構造は,プログラミング言語で扱う型の構造(例えば継承と派生.これ以外にも色々と構造があったりするので,十分複雑だけれども…)よりも複雑なので,これを取り扱うためにSageでは独自の型変換機構(cercion system)を実装している.
そのため,独自に新しい対象を定義したい場合は,この実装のルールに従って定義すると,型変換機構の恩恵を受けることができる.
SageはPythonの拡張なので,もちろんPython言語として実装してもよい.この場合はSageの型変換機構の恩恵を受けることはできない.
ParentとElement
簡単に言って,全ての対象は基本的にElementクラスから派生したクラスのインスタンスとして扱われる.
また,集合や群,体など,型の概念に対応する何らかの集合があり,この集合から要素を取り出す(生成する)といった場合には,Parentクラスの派生クラスとElementクラスの派生クラスを関連付けることで,この関係を実装する.
Sageでは,一定のルールに従ってコードを記述することにより,Sageにおける型変換機構を利用しつつ独自の対象を実装することができる.
Category
TODO: 未調査.
サンプルコード
- サンプルコードを適当に書いてみた.