研究概要 |
数学者の仕事は大きく分けて新しい概念の発明や証明の構築という創造的なものと、計算や確認という手続的なものとに分けられる。後者によって新しいアイディアが生まれることもあるが、一般的には繰り返しが多く、面白みの少ない作業と思われる。自動化が進み、数値計算のほとんどと数式計算の一部が計算機で行われるようになったが、いまだに手作業しかない分野も多い。例えば、代数解析では基本演算は可換性を持たないので普通の代数演算ソフトウェアでは扱えない。 そういう問題を解決するために、新しい演算を型体系をもった関数型言語で書けるという枠組を作った。計算の概念は代数演算と同様に書き換えを仕様したが,型情報に依存する計算もできる。同時に、定義の汎用性を上げるために、言語における多相性(同じ定義で違う対象が扱える性質)に注目した。そのために言語に二種類の多相性を持たせた。 ・オーバーロ-ディング 数学の演算子は様々な領域の上に定義されている。オーバーロ-ディングによって同じ演算子で複数の意味が表現できる。 ・一様な多相性 上記のオーバーロ-ディングでは領域の数と同じ数の定義をしなければならないが、一様(パラメトリック)な多相性を使うと、領域に関係しない定義も行える。例えば行列の積算は要素の積算と無関係に定義できる。 さらに、数式の扱いに理論的な基礎を与えるために、自由変換の役割を明確にした。従来の関数型言語だと自由変換はないが、数式には必要なので、変数の導入、代入が書けるようにした。 当言語処理系が現在開発中で、完成すればライブラリとツールの作成に移る。
|