SSブログ

なんちゃってMathematicaを作る - その12 [なんちゃってMathematica]

前回はLISPの評価エンジン(eval)をMathematicaだけでなく数式処理ソフトウェアの多くが使っているということを見た。基本的には「なんちゃってMathematica」にも同じようにLISP評価エンジンが使えるはず。今日はそうすることで遭遇するであろう問題点を整理しておく。

8.3  評価エンジンの問題点

8.3.1  ガベージコレクション

この時点でいくつか問題が思い浮かぶ。まずガベージコレクションをどうするか、ということ。ガベージコレクションはLISPのシステムではいつも問題になっていたが、その評価メカニズムを流用すれば同様の問題が発生する。

式がどんどん書き換えられて少なくとも出力そのもの以外は評価が終わると不要になる。実装上は、それをObjective-Cのオブジェクト管理機構を使って実現可能かどうか、というところが重要だろう。

8.3.2  Replaceによる書き換え

また、MathemaitcaにはReplaceという陽に書き換え規則を与える手段があって、Mathematicaのオプションはこの機構を使ってMathematicaコードとして実装されているので、なんちゃってMathematicaにとっても必須である。しかしこのReplaceの効率のいいメカニズムは結構難しい。

8.3.3  Blanckオブジェクトの扱い

さらに、
Blank[x]
あるいは
Pattern[x,Blank[]]
というかたちのオブジェクト(糖衣構文では_xやx_と書かれる)。これは普通仮引数のような使い方をするけど、もっと細かな制御が出来るようになっていてこれをどういうメカニズムで実装するか、というのも評価エンジンの大きな問題。

Mathematicaのおおまかな構造は理解できたということにして、他の部分を考えてみることにする。この話にも飽きてきたし。
nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

献立11/27献立11/28 ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。