Mathematicaは項書き換え言語とされていますが、公式的にはオブジェクト指向言語ではありません。しかし、関数の二重定義により、オブジェクト指向言語とみなすことが出来ます。この定義はMathematica本来の関数定義機能なので、何らの外部システムを必要としません。Mathematica上にオブジェクト指向をを構築することで、Mathematicaの能力が大幅に拡大されるとともに、オブジェクト指向とは何か、を知ることが出来ます。